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

C# 使用Serilog在WebAPI 2中记录重要信息,c#,logging,asp.net-web-api,asp.net-web-api2,serilog,C#,Logging,Asp.net Web Api,Asp.net Web Api2,Serilog,刚开始使用Serilog,这很不错,但我有点困惑 如果控制器的操作出现错误,我希望从请求中记录尽可能多的有用信息(标题、参数等) 最好的方法是什么?您可以考虑使用该功能 根据链接中的文档,您将构建类似于 var log = new LoggerConfiguration() .Enrich.WithThreadId() .WriteTo.Console() .CreateLogger(); 通过日志写入的所有事件都将带有一个属性ThreadId,该属性的id为写入它们的托管线程的id。(按照惯

刚开始使用Serilog,这很不错,但我有点困惑

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


最好的方法是什么?

您可以考虑使用该功能

根据链接中的文档,您将构建类似于

var log = new LoggerConfiguration()
.Enrich.WithThreadId()
.WriteTo.Console()
.CreateLogger();
通过日志写入的所有事件都将带有一个属性ThreadId,该属性的id为写入它们的托管线程的id。(按照惯例,任何.WithXyz()方法都可以创建名为Xyz的属性。)

Github上的一个例子是。它提供了许多丰富程序来捕获请求中的某些信息,例如

var log = new LoggerConfiguration()
.WriteTo.ColoredConsole()
.Enrich.With<HttpRequestIdEnricher>()
.Enrich.With<UserNameEnricher>()
.CreateLogger();
var log=new LoggerConfiguration()
.WriteTo.ColoredConsole()
用()丰富
用()丰富
.CreateLogger();

您可以遵循类似的方法,创建一个enricher来捕获您始终希望在日志中输出的信息,然后使用enricher初始化日志记录器

SerilogWeb.Classic.WebApi
还添加了更多的WebApi信息,我认为: