使用Serilog在WebAPI 2中记录重要信息

时间:2017-03-08 00:31:21

标签: c# logging asp.net-web-api asp.net-web-api2 serilog

刚刚开始与Serilog合作,它非常好但我有点困惑。

如果我的控制器操作出错,我想尽可能多地从请求(标题,参数等)中记录有用的信息。

最好的方法是什么?

1 个答案:

答案 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初始化您的记录器。