这是我的serilog配置:
Log.Logger = new LoggerConfiguration()
.WriteTo.RollingFile(System.IO.Path.Combine(AppDomain.CurrentDomain.BaseDirectory,
@"Logs\log-{Date}.txt"))
.MinimumLevel.ControlledBy(LogLevelSwitch)
.CreateLogger();
我是这样记录的:
var log = Serilog.Log.ForContext<SomeClassName>();
log.Information("some log text");
我的问题:
我需要修改配置,为每个SourceContext创建单独的日志。
我需要像Logs\log-{Date}-{SourceContext}.txt
感谢专业人士......
答案 0 :(得分:3)
实现这一点的一种方法是创建自己的ILogEventSink
实现(界面非常简单),内部根据RollingFileSink
属性调度到几个SourceContext
之一。 LogEvent
。
要进行配置(假设您调用接收器SourceRollingFileSink
),可以使用WriteTo.Sink()
:
Log.Logger = new LoggerConfiguration()
.WriteTo.Sink(new SourceRollingFileSink())
.CreateLogger();
没有开箱即用的实现,因此需要一些工作,但它不应该复杂。 请注意 ILogEventSink
的实现需要是线程安全的。