【问题标题】:Serilog separate rolling files for each SourceContextSerilog 为每个 SourceContext 单独滚动文件
【发布时间】:2016-04-26 06:31:56
【问题描述】:

这是我的 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的日志文件

感谢专业人士...

【问题讨论】:

    标签: serilog


    【解决方案1】:

    实现这一点的一种方法是创建自己的ILogEventSink 实现(接口非常简单),该实现在内部根据LogEventSourceContext 属性分派到多个RollingFileSink 之一。

    要配置它(假设您将接收器称为SourceRollingFileSink),您可以使用WriteTo.Sink()

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

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

    【讨论】:

    • 非常感谢。我试试看
    猜你喜欢
    • 2015-11-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多