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

Queue debug log messages and dump when a error message is logged

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

目前是否可以这样:

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

正常流量:

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

如果最低级别是信息,则将所有调试日志消息排队(例如使用当前的 CorrelationId 或其他一些范围变量)并且在调用 log.Error 时,您还可以使用较低的级别转储已记录的消息等级.

谢谢

马可

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

来自该自述文件:

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

该包使用缓冲区范围而不是相关 ID 来控制触发发生时发出哪些事件:

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