【发布时间】:2017-07-28 09:42:06
【问题描述】:
刚开始使用 Serilog,它非常好,但我有点困惑。
如果我的控制器操作出错,我想从请求中记录尽可能多的有用信息(标头、参数等)。
最好的方法是什么?
【问题讨论】:
标签: c# logging asp.net-web-api asp.net-web-api2 serilog
刚开始使用 Serilog,它非常好,但我有点困惑。
如果我的控制器操作出错,我想从请求中记录尽可能多的有用信息(标头、参数等)。
最好的方法是什么?
【问题讨论】:
标签: c# logging asp.net-web-api asp.net-web-api2 serilog
你可以看看使用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();
您可以遵循类似的方法,创建一个丰富器来捕获您始终希望在日志中输出的信息,然后使用该丰富器初始化您的记录器。
【讨论】:
SerilogWeb.Classic.WebApi 还添加了更多 WebAPI 信息,我认为:github.com/serilog-web/classic-webapi