刚刚开始与Serilog合作,它非常好但我有点困惑。
如果我的控制器操作出错,我想尽可能多地从请求(标题,参数等)中记录有用的信息。
最好的方法是什么?
答案 0 :(得分:2)
您可以查看使用Enrichment功能
根据链接中的文档,您将构建类似于
的记录器var log = new LoggerConfiguration()
.Enrich.WithThreadId()
.WriteTo.Console()
.CreateLogger();
“通过日志写入的所有事件都将带有一个属性ThreadId,其中包含编写它们的托管线程的id。(按照惯例,Enrich上的任何.WithXyz()方法都会创建名为Xyz的属性。)”
Github上的一个例子是SerilogWeb.Classic。它提供了许多从请求中捕获某些信息的浓缩器,例如
var log = new LoggerConfiguration()
.WriteTo.ColoredConsole()
.Enrich.With<HttpRequestIdEnricher>()
.Enrich.With<UserNameEnricher>()
.CreateLogger();
您可以关注类似的应用程序,创建一个富集程序,捕获您希望在日志中输出的信息,然后使用richher初始化您的记录器。