前段时间,项目有需求,需要将某些模块的日志单独记录文件夹,于是找了一下Serilog的目录配置。
如果是按照appsetting来配置,节点内容大概如下:
{
"Name": "RollingFile",
"Args": {
"pathFormat": "Logs/Warning/{Date}.txt",
"RestrictedToMinimumLevel": "Warning",
"rollingInterval": "Day",
"outputTemplate": "{Timestamp:yyyy-MM-dd hh:mm:ss} || {Level} || {SourceContext:l} || {Message} || {Exception} || end {NewLine}"
}
}
看这个样子,pathFormat只能根据日期来区分,再看看如果在程序内配置如何:
Log.Logger = new LoggerConfiguration()
.Enrich.FromLogContext()
.MinimumLevel.Warning() // 生产最小记录级别
.WriteTo.Logger(lg => lg.Filter.ByIncludingOnly(p => p.Level == LogEventLevel.Debug).WriteTo.File(LogFilePath("Debug"), rollingInterval: RollingInterval.Day, outputTemplate: SerilogOutputTemplate))
网上找到例子,看上去Filter只能控制Level来区分目录,每个Level一个目录,还是不符合我的需求。
不过后来看到了Filter筛选对象是LogEvent,那么可以根

本文详细介绍了如何使用Serilog配置模块特定的日志记录,包括利用pathFormat和LogEvent属性创建按模块划分的文件夹,以及通过Filter功能实现灵活的日志筛选。并通过示例展示了如何为不同模块设置不同的日志路径和命名规则。
最低0.47元/天 解锁文章
4869

被折叠的 条评论
为什么被折叠?



