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

PasteSpider之appsettings.json中的Serilog的配置,分流不同日志层级的信息!的更多相关文章

  1. .NET Core类库项目中如何读取appsettings.json中的配置

    这是一位朋友问我的问题,写篇随笔回答一下.有2种方法,一种叫丑陋的方法 —— IConfiguration ,一种叫优雅的方法 —— IOptions . 1)先看丑陋的方法 比如在 RedisCli ...

  2. Java中多环境Logback配置与ELK日志发送

    Java中多环境Logback配置与ELK日志发送   一.项目基于SpringBoot实现,引入SpringBoot相关库后,本文还要讲上传到ELK的Logstash,所以需要在pom.xml中加入 ...

  3. .Net Core中获取appsettings.json中的节点数据

    获取ConnectionStrings节点数据 //appsettings.json { "ConnectionStrings": { //DEV "DbConn&quo ...

  4. 七、.net core(.NET 6)使用Serilog进行配置和实现日志记录

    使用Serilog来实现日志记录 先安装Serilog六件套神装包: 也可以对个别相应的包进行删除等,都是可以的.例如,标注的1是读取配置文件的,如果不需要通过配置文件进行操作,就可以使用这个包.2是 ...

  5. .NET Core在类库中读取配置文件appsettings.json

    在.NET Framework框架时代我们的应用配置内容一般都是写在Web.config或者App.config文件中,读取这两个配置文件只需要引用System.Configuration程序集,分别 ...

  6. 如何在 ASP.Net Core 中使用 Serilog

    记录日志的一个作用就是方便对应用程序进行跟踪和排错调查,在实际应用上都是引入 日志框架,但如果你的 日志文件 包含非结构化的数据,那么查询起来将是一个噩梦,所以需要在记录日志的时候采用结构化方式. 将 ...

  7. 每天记录一点:NetCore获得配置文件 appsettings.json

    用NetCore做项目如果用EF  ORM在网上有很多的配置连接字符串,读取以及使用方法 由于很多朋友用的其他ORM如SqlSugar,NH,Dapper等,在读取连接字符串的时候,往往把信息保存到一 ...

  8. .Net Core 读取配置文件 appsettings.json

    1. 首先些一个类 public class MySettings { public string P1 { get; set; } public string P2 { get; set; } } ...

  9. Asp.Net Core 进阶(一) —— 读取appsettings.json

    我们以前在Asp.Net MVC中使用 System.Configuration.ConfigurationManager 来读取web.config文件.但是Asp.Net Core MVC已经没有 ...

  10. 每天记录一点:NetCore获得配置文件 appsettings.json vue-router页面传值及接收值 详解webpack + vue + node 打造单页面(入门篇) 30分钟手把手教你学webpack实战 vue.js+webpack模块管理及组件开发

    每天记录一点:NetCore获得配置文件 appsettings.json   用NetCore做项目如果用EF  ORM在网上有很多的配置连接字符串,读取以及使用方法 由于很多朋友用的其他ORM如S ...

随机推荐

  1. Python 集合(Sets)2

    访问项 您无法通过引用索引或键来访问集合中的项.但是,您可以使用for循环遍历集合项,或者使用in关键字检查集合中是否存在指定的值. 示例,遍历集合并打印值: thisset = {"app ...

  2. CentOS 6.5编译安装httpd-2.4.7

    CentOS 6.5编译安装httpd-2.4.7 CentOS 编译安装 Apache 2.4 准备: [root@NFSServer ~]# yum groupinstall "Deve ...

  3. 重新整理.net core 计1400篇[五] (.net core 修改为Startup模式 )

    前言 随着不断的升级改版,我们离dotnet帮我们生成的文件中还差一步,那就是我们少了一个Startup,那么这个有什么用呢?让我们来补上it吧. 在此之前需要明白一件事,那就是Startup是一种约 ...

  4. Gowin 1nr-9k mipi测试

    本次实验是利用gowin 1nr-9k的开发板测试MIPI屏. 测试的屏是2.0寸的,接口如下: 接上IO就是RST和MIPI的时钟和数据接口,另外就是电源和地. Gowin的案例中,首先是软件要升级 ...

  5. 力扣1126(MySQL)-查询活跃业务(中等)

    题目: 事件表:Events 此表的主键是 (business_id, event_type). 表中的每一行记录了某种类型的事件在某些业务中多次发生的信息. 问题写一段 SQL 来查询所有活跃的业务 ...

  6. 作业帮在线业务 Kubernetes Serverless 虚拟节点大规模应用实践

    ​简介:目前方案已经成熟,高峰期已有近万核规模的核心链路在线业务运行在基于阿里云 ACK+ECI 的 Kubernetes Serverless 虚拟节点.随着业务的放量,未来运行在 Serverle ...

  7. [FAQ] Windows 终端 `git diff` 出现 LF 空格 ^M 符号, 处理方式

      可能是终端内的换行配置和 IDE 当中的不一致. 比如 PHPStorm 的: Git 终端使用 git config core.autocrlf 查看是 true 还是 false. 是 tru ...

  8. [FAQ] Vue iframe 的 src 是链接地址却加载了相对路径 ?

    iframe 的 src 是链接, 但是加载的实际链接是相对路径,只有一种可能:链接地址不正确. 检查链接有没有少符号,常见错误:http//,http:/ Refer:Vue的iframe错误 Li ...

  9. [PHP] 浅谈 Laravel auth:api 不同驱动 token 和 passport 的区别

    token 驱动使用 TokenGuard 用传递的值去用户表中查询 member_token 字段的值,看是否有匹配的. 服务端需要在用户表 member_token 字段中存储 access_to ...

  10. 2018-8-10-win10-uwp-如何开始写-uwp-程序

    title author date CreateTime categories win10 uwp 如何开始写 uwp 程序 lindexi 2018-08-10 19:16:50 +0800 201 ...