在正常设置中,您只记录信息和较低级别的问题,但是当发生错误并被记录下来时,如果您同时拥有调试日志消息,则非常方便。
目前是否可以这样:
Log.Logger = new LoggerConfiguration()
.Enrich.WithCorrelationId()
// ...other configuration...
.CreateLogger();
正常流量:
log.Debug(...)
...
Exception:
log.Error(ex, ...)
如果最低级别为“信息”,则将所有调试日志消息(例如,与当前的CorrelationId或某些其他作用域变量一起)放入队列,并在调用log.Error时,还可以转储具有较低级别的已记录消息。
谢谢
马可
答案 0 :(得分:2)
Serilog.Sinks.Buffer可能就是您想要的。
自述文件:
Log.Logger = new LoggerConfiguration()
.UseLogBuffer(("*", LogEventLevel.Information, LogEventLevel.Debug))
.WriteTo(lc => lc.WriteTo.Console())
.CreateLogger();
该程序包使用缓冲区作用域而不是相关性ID来控制触发时发生的事件:
using (LogBuffer.BeginScope())
{
// ...
}