【问题标题】:Logging important info in WebAPI 2 using Serilog使用 Serilog 在 WebAPI 2 中记录重要信息
【发布时间】:2017-07-28 09:42:06
【问题描述】:

刚开始使用 Serilog,它非常好,但我有点困惑。

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

最好的方法是什么?

【问题讨论】:

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


    【解决方案1】:

    你可以看看使用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();
    

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

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多