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

发布时间 2023-10-31 12:01:30作者: PasteSpider

在实际使用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