首页 > 其他分享 >PasteSpider之appsettings.json中的Serilog的配置,分流不同日志层级的信息!

PasteSpider之appsettings.json中的Serilog的配置,分流不同日志层级的信息!

时间:2023-10-31 12:01:09浏览次数:48  
标签:文件 文件大小 Serilog PasteSpider 部署 json 日志 null

在实际使用Serilog中,我们通常会有不一样的需求,常见的比如

1.按照等级,高级哪个等级的才记录

2.记录文件每个多大,超过的划分到下一个文件中

3.不同等级的记录到不同的位置中

4.按照不一样的格式输出

以下是PasteSpider中的appsettings.json中关于Serilog的配置

  "Serilog": {
    "LevelSwitches": {
      "$errorSwitch": "Error",
      "$infoSwitch": "Information",
      "$warnSwitch": "Warning"
    },
    "MinimumLevel": {
      "Default": "Information",
      "Override": {
        "Microsoft": "Information",
        "System": "Information"
      }
    },
    "WriteTo": [
      {
        "Name": "Console",
        "Args": {
          "restrictedToMinimumLevel": "Warning"
        }
      },
      {
        "Name": "File",
        "Args": {
          "path": "logs/log.txt",
          "levelSwitch": "$infoSwitch", //也可以使用 restrictedToMinimumLevel:Information
          "rollingInterval": "Day", // "创建文件的类别,可以是分钟,小时,天,月,年": null, 
          "retainedFileCountLimit": 60, // "--设置日志文件个数最大值,默认31,意思就是只保留最近的31个日志文件", "等于null时永远保留文件": null,
          "fileSizeLimitBytes": 3145728, //设置单个文件大小为3M 默认1G
          "rollOnFileSizeLimit": true //超过文件大小后创建新的
        }
      },
      {
        "Name": "File",
        "Args": {
          "path": "logs/warning.txt",
          "levelSwitch": "$warnSwitch",
          "rollingInterval": "Day", // "创建文件的类别,可以是分钟,小时,天,月,年": null,
          "retainedFileCountLimit": 60, // "--设置日志文件个数最大值,默认31,意思就是只保留最近的31个日志文件", "等于null时永远保留文件": null,
          "fileSizeLimitBytes": 3145728, //设置单个文件大小为3M 默认1G
          "rollOnFileSizeLimit": true //超过文件大小后创建新的
        }
      },
      {
        "Name": "File",
        "Args": {
          "path": "logs/error.txt",
          "levelSwitch": "$errorSwitch",
          "rollingInterval": "Day", // "创建文件的类别,可以是分钟,小时,天,月,年": null,
          "retainedFileCountLimit": 60, // "--设置日志文件个数最大值,默认31,意思就是只保留最近的31个日志文件", "等于null时永远保留文件": null,
          "fileSizeLimitBytes": 3145728, //设置单个文件大小为3M 默认1G
          "rollOnFileSizeLimit": true //超过文件大小后创建新的
        }
      }
    ],
    "Enrich": [ "FromLogContext", "WithMachineName", "WithThreadId" ]
  }

 

重点看WriteTo,他是一个数组类型,所以可以写多个,根据写入到不同的地方,配置不一样的限定

"levelSwitch"比较特殊,他的意思是写入某种,如果你要写入XXX级别以上的那就换一个,使用restrictedToMinimumLevel即可。

这里有一个问题,如果你得服务是部署到容器中的,使用的是同一个宿主机,如果挂载的路径一样,这样日志文件就会冲突了,这个时候就需要想办法要么他们挂载的路径不一样,要么写入的文件不一样(这个问题在PasteSpider中可以解决)!

PasteSpider是什么呢?

他是一款部署工具,你写好了代码要部署到服务器上对吧,他就是把你的代码或者发布文件部署到服务器(linux)上的

我可以手动部署,用这个有什么优势呢?

1.PasteSpider使用差量同步文件机制。

  a.差量更新,有变动的才更替,节省时间和流量

  b.基于同步配置,哪些必更新,哪些忽略,这样有些配置文件可以做到更新的人都不不知道服务器上的配置信息是啥!

  c.隐藏的配置,项目和对应的文件夹对应,不会出现A项目更新到B项目文件夹的情况

  d.基于不同环境模式部署,一套代码可以在测试,正式等环境使用,基于配置文件划分部署情况

2.PasteSpider运行于容器内,podman/docker,安全性啥的也有保障,再者你可以使用内网的形式部署,PasteSpider的运作方式是使用SSH运行部署命令。

3.非侵入式,有别于K8S等,你使用PasteSpider部署服务后,停止PasteSpider,你得服务也可以继续运行,说白点PasteSpider只是模拟你手动操作而已。

4.支持git/svn的源码部署模式,一般的我们使用jenkins进行构建,但是这个东西呢他太吃服务器内存了,jenkins+k8s等不不得准备个20GB给他吃,这对于服务器来说是一笔不小的开支,PasteSpider可以部署在内存更新的服务器上,比如作者的2GBlinux服务器。

5.图文操作,简单易上手,不需要额外学习其他的知识,比如涉及到的路由知识,查找nginx的资料即可,PasteSpider是使用nginx实现路由的。

更多资料发现见:https://soft.pastecode.cn/Home/Soft

 

 

标签:文件,文件大小,Serilog,PasteSpider,部署,json,日志,null
From: https://www.cnblogs.com/pastespider/p/17799905.html

相关文章

  • mysql处理json格式的字段,一文搞懂mysql解析json数据
    文章目录一、概述1、什么是JSON2、MySQL的JSON3、varchar、text、json类型字段的区别二、JSON类型的创建1、建表指定2、修改字段三、JSON类型的插入1、字符串直接插入2、JSON_ARRAY()函数插入数组3、JSON_OBJECT()函数插入对象4、JSON_ARRAYAGG()和JSON_OBJECTAGG()将查询结果封装......
  • 聊聊多层嵌套的json的值如何解析/替换
    前言前阵子承接了2个需求,一个数据脱敏,一个是低代码国际化多语言需求,这两个需求有个共同特点,都是以json形式返回给前端,而且都存在多层嵌套,其中数据脱敏的数据格式是比较固定,而低代码json的格式存在结构固定和不固定2种格式。最后不管是数据脱敏或者是多语言,业务抽象后,都存在需要......
  • .Net Core中读取json配置文件
    1、编写实例化类。新建可供实例化的配置类JwtConfig///<summary>///Jwt的配置类///</summary>publicclassJwtConfig{///<summary>///定位///</summary>publicconststringPosition="Jwt";///<summary>///验证......
  • python json5 转 json
    JSON5是JSON的超集,它的目标是使JSON更易于人类阅读和编写。JSON5引入了一些在ECMAScript5中的一些特性,如注释、尾逗号、单引号等¹。要将JSON5转换为JSON,你需要删除JSON5中的所有注释、尾逗号和单引号,并确保所有的键都被双引号包围。这可以通过编程实现,也可以使用在......
  • Python中的JSON数据解析和映射--根据value查询key
    importjson#原始JSON数据json_data='''[{"id":1,"name":"MOVE"},{"id":2,"name":"LEFT_DOWN"},{"id":3,"name":"LEFT_UP"},{......
  • Hive中json格式字段清洗与提取
    废话不多说,直接上案例如下是某json字段的查询结果,可以看出它是一个json数组selectsales_pricefromorder_goodswhereorder_number='R1001';--结果:[{"threshold_number":1,"group_id":1,"gear_price":"120.00"},{"threshold_number"......
  • Pandas数据导入和导出:CSV、Excel、MySQL、JSON
    导入MySQL查询结果:read_sqlimportpandascon="mysql+pymysql://user:[email protected]/test"sql="SELECT*FROM`student`WHEREid=2"#sql查询df1=pandas.read_sql(sql=sql,con=con)print(df1)导入MySQL整张表:read_sql_table#整张表df2=pandas.rea......
  • 基于jquery+html开发的json格式校验工具
    json简介JSON是一种轻量级的数据交换格式。易于人阅读和编写。同时也易于机器解析和生成。它基于JavaScriptProgrammingLanguage,StandardECMA-2623rdEdition-December1999的一个子集。JSON采用完全独立于语言的文本格式,但是也使用了类似于C语言家族的习惯(包括C,C++,......
  • 基于jquery+html开发的json格式校验工具
    json简介JSON是一种轻量级的数据交换格式。易于人阅读和编写。同时也易于机器解析和生成。它基于JavaScriptProgrammingLanguage,StandardECMA-2623rdEdition-December1999的一个子集。JSON采用完全独立于语言的文本格式,但是也使用了类似于C语言家族的习惯(包括C,C++......
  • 动态金额 jsonArray 计算
    动态金额jsonArray计算数据格式[{"name":"福利卡券","type":"WELFARE_CARD_COUPON","useNum":0.01},{"name":"现金","type":"CASH","useNum":12.26}]相加/***cos......