我正在使用 serilog,我需要将不同的日志级别保存到不同的文件(例如 debug-20200708.log 用于调试级别,info-20200798.log 用于调试级别等等)
我使用了下面的代码,但它不能正常工作。
var baseLogger = new Serilog.LoggerConfiguration()
.WriteTo.Logger(l => l
.Filter.ByIncludingOnly(e => e.Level == LogEventLevel.Fatal))
.WriteTo.File(
path: GetLogPath(LogEventLevel.Fatal),
formatter: formatter)
.WriteTo.Logger(l => l
.Filter.ByIncludingOnly(e => e.Level == LogEventLevel.Error))
.WriteTo.File(
path: GetLogPath(LogEventLevel.Error),
formatter: formatter)
.WriteTo.Logger(l => l
.Filter.ByIncludingOnly(e => e.Level == LogEventLevel.Warning))
.WriteTo.File(
path: GetLogPath(LogEventLevel.Warning),
formatter: formatter)
.WriteTo.Logger(l => l
.Filter.ByIncludingOnly(e => e.Level == LogEventLevel.Information))
.WriteTo.File(
path: GetLogPath(LogEventLevel.Information),
formatter: formatter)
.WriteTo.Logger(l => l
.Filter.ByIncludingOnly(e => e.Level == LogEventLevel.Debug))
.WriteTo.File(
path: GetLogPath(LogEventLevel.Debug),
formatter: formatter)
.WriteTo.Logger(l => l
.Filter.ByIncludingOnly(e => e.Level == LogEventLevel.Verbose))
.WriteTo.File(
path: GetLogPath(LogEventLevel.Verbose),
formatter: formatter)
.Enrich.FromLogContext();
_logger = baseLogger.CreateLogger();
它不起作用的主要原因是因为您没有使用.WriteTo
过滤器的,而不是你使用.WriteTo
主管道(未应用过滤器)的。
例如。代替:
.WriteTo.Logger(l => l
.Filter.ByIncludingOnly(e => e.Level == LogEventLevel.Fatal))
.WriteTo.File(
path: GetLogPath(LogEventLevel.Fatal),
formatter: formatter)
您需要(注意括号中的区别):
.WriteTo.Logger(l => l
.Filter.ByIncludingOnly(e => e.Level == LogEventLevel.Fatal)
.WriteTo.File(
path: GetLogPath(LogEventLevel.Fatal),
formatter: formatter))
这适用于每个.WriteTo
你接到的电话,因为他们都有同样的问题。
修复此问题后,您将看到日志现在已写入相应的文件,除了Verbose
and Debug
(文件为空)。原因是 Serilog 的默认设置MinimumLevel
is Information
因此低于该值的任何内容都会被忽略。要解决这个问题,您需要设置MinimumLevel
to Verbose
在日志记录管道配置中:
var baseLogger = new Serilog.LoggerConfiguration()
.MinimumLevel.Verbose()
.WriteTo.Logger(l => l
// ...
ps:还有一种不同的方法可以使用Serilog.Sinks.Map https://github.com/serilog/serilog-sinks-map你可以看到一个水槽例子在这里 https://stackoverflow.com/a/62069498/211672.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)