Serilog为每个SourceContext分隔滚动文件

时间:2016-04-22 16:22:01

标签: serilog

这是我的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

这样的日志文件

感谢专业人士......

1 个答案:

答案 0 :(得分:3)

实现这一点的一种方法是创建自己的ILogEventSink实现(界面非常简单),内部根据RollingFileSink属性调度到几个SourceContext之一。 LogEvent

要进行配置(假设您调用接收器SourceRollingFileSink),可以使用WriteTo.Sink()

Log.Logger = new LoggerConfiguration()
  .WriteTo.Sink(new SourceRollingFileSink())
  .CreateLogger();

没有开箱即用的实现,因此需要一些工作,但它不应该复杂。 请注意 ILogEventSink的实现需要是线程安全的。

相关问题