使用 Serilog 在 WebAPI 2 中记录重要信息
Logging important info in WebAPI 2 using Serilog
刚开始使用 Serilog,它很不错,但我有点困惑。
万一我的 Controller 操作出错,我想从请求(headers、参数等)中记录尽可能多的有用信息.
最好的解决方法是什么?
您可以考虑使用 Enrichment 功能
根据 link 的文档,您可以构建类似于
的记录器
var log = new LoggerConfiguration()
.Enrich.WithThreadId()
.WriteTo.Console()
.CreateLogger();
"All events written through log will carry a property ThreadId with the id of the managed thread that wrote them. (By convention, any .WithXyz() methods on Enrich create properties named Xyz.)"
Github 上的一个例子是 SerilogWeb.Classic。它提供了一些丰富的内容来从请求中捕获某些信息,例如
var log = new LoggerConfiguration()
.WriteTo.ColoredConsole()
.Enrich.With<HttpRequestIdEnricher>()
.Enrich.With<UserNameEnricher>()
.CreateLogger();
您可以遵循类似的方法,创建一个 enricher 来捕获您始终希望在日志中输出的信息,然后使用该 enricher 初始化您的记录器。
刚开始使用 Serilog,它很不错,但我有点困惑。
万一我的 Controller 操作出错,我想从请求(headers、参数等)中记录尽可能多的有用信息.
最好的解决方法是什么?
您可以考虑使用 Enrichment 功能
根据 link 的文档,您可以构建类似于
的记录器var log = new LoggerConfiguration()
.Enrich.WithThreadId()
.WriteTo.Console()
.CreateLogger();
"All events written through log will carry a property ThreadId with the id of the managed thread that wrote them. (By convention, any .WithXyz() methods on Enrich create properties named Xyz.)"
Github 上的一个例子是 SerilogWeb.Classic。它提供了一些丰富的内容来从请求中捕获某些信息,例如
var log = new LoggerConfiguration()
.WriteTo.ColoredConsole()
.Enrich.With<HttpRequestIdEnricher>()
.Enrich.With<UserNameEnricher>()
.CreateLogger();
您可以遵循类似的方法,创建一个 enricher 来捕获您始终希望在日志中输出的信息,然后使用该 enricher 初始化您的记录器。