Serilog 的显式日志级别而不是 MinimumLevel
Explicit Log Level instead of MinimumLevel for Serilog
有什么方法可以在 serilog 中为每个文件配置一个日志级别?
我知道我可以为每个 "MinimumLevel" 配置一个文件,但这不是我需要的。
我也有类似的需求。经过一些研究,我在我的 .net core 2.2 web api 的 Startup class 中添加了以下内容:
Log.Logger = new LoggerConfiguration()
.MinimumLevel.Override("Microsoft", LogEventLevel.Error)
.WriteTo.Logger(lc => lc
.Filter.ByIncludingOnly(evt => evt.Level == LogEventLevel.Error)
.WriteTo.RollingFile("C:\Temp\erros-logs.txt"))
.WriteTo.Logger(lc => lc
.Filter.ByIncludingOnly(evt => evt.Level == LogEventLevel.Information)
.WriteTo.RollingFile("C:\Temp\info-logs.txt"))
.CreateLogger();
如果您正在从 appsettings.json 文件中读取设置并且您想要使用上述内容,您应该从文件中传输您的逻辑。
我的回答很大程度上受到了以下 post 的启发:
Restrict to level
Serilog.Sinks.Map 可以用于此而不会引入太多重复:
Log.Logger = new LoggerConfiguration()
.WriteTo.Map(le => le.Level, (level, wt) => wt.File($"C:\Temp\{level}-logs.txt"));
有什么方法可以在 serilog 中为每个文件配置一个日志级别?
我知道我可以为每个 "MinimumLevel" 配置一个文件,但这不是我需要的。
我也有类似的需求。经过一些研究,我在我的 .net core 2.2 web api 的 Startup class 中添加了以下内容:
Log.Logger = new LoggerConfiguration()
.MinimumLevel.Override("Microsoft", LogEventLevel.Error)
.WriteTo.Logger(lc => lc
.Filter.ByIncludingOnly(evt => evt.Level == LogEventLevel.Error)
.WriteTo.RollingFile("C:\Temp\erros-logs.txt"))
.WriteTo.Logger(lc => lc
.Filter.ByIncludingOnly(evt => evt.Level == LogEventLevel.Information)
.WriteTo.RollingFile("C:\Temp\info-logs.txt"))
.CreateLogger();
如果您正在从 appsettings.json 文件中读取设置并且您想要使用上述内容,您应该从文件中传输您的逻辑。
我的回答很大程度上受到了以下 post 的启发: Restrict to level
Serilog.Sinks.Map 可以用于此而不会引入太多重复:
Log.Logger = new LoggerConfiguration()
.WriteTo.Map(le => le.Level, (level, wt) => wt.File($"C:\Temp\{level}-logs.txt"));