有什么方法可以为serilog中的每个文件配置一个日志级别吗?
我知道我可以为每个“ MinimumLevel”配置一个文件,但这不是我所需要的。
答案 0 :(得分:3)
Serilog.Sinks.Map可用于此目的,而无需引入太多重复:
Log.Logger = new LoggerConfiguration()
.WriteTo.Map(le => le.Level, (level, wt) => wt.File($"C:\\Temp\\{level}-logs.txt"));
答案 1 :(得分:2)
我有类似的要求。经过研究,我在.net core 2.2 Web api的Startup类中添加了以下内容:
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文件中读取设置,并且要使用上述设置,则应该从文件中转移逻辑。
我的回答受到以下帖子的启发: Restrict to level