将调试日志消息排队并在记录错误消息时转储

时间:2020-11-09 12:35:10

标签: serilog

在正常设置中,您只记录信息和较低级别的问题,但是当发生错误并被记录下来时,如果您同时拥有调试日志消息,则非常方便。

目前是否可以这样:

Log.Logger = new LoggerConfiguration()
    .Enrich.WithCorrelationId()
    // ...other configuration...
    .CreateLogger();

正常流量:

log.Debug(...)
...
Exception:
log.Error(ex, ...)

如果最低级别为“信息”,则将所有调试日志消息(例如,与当前的CorrelationId或某些其他作用域变量一起)放入队列,并在调用log.Error时,还可以转储具有较低级别的已记录消息。

谢谢

马可

1 个答案:

答案 0 :(得分:2)

Serilog.Sinks.Buffer可能就是您想要的。

自述文件:

Log.Logger = new LoggerConfiguration()
    .UseLogBuffer(("*", LogEventLevel.Information, LogEventLevel.Debug))
    .WriteTo(lc => lc.WriteTo.Console())
    .CreateLogger();

该程序包使用缓冲区作用域而不是相关性ID来控制触发时发生的事件:

using (LogBuffer.BeginScope())
{
   // ...
}