【问题标题】:How to remove properties from log entries in ASP.Net Core如何从 ASP.Net Core 中的日志条目中删除属性
【发布时间】:2022-03-11 17:07:56
【问题描述】:

我正在使用带有 ASP.Net Core 2.0 的 Serilog,使用 JsonFormatter 写入 RollingFile。
按照此处的说明进行配置:https://github.com/serilog/serilog-aspnetcore
一切都很好,但是在每个日志条目中,我都得到了以下我没有记录的属性:

  • SourceContext
  • 请求 ID
  • 请求路径

我认为它们是由 ASP.Net Core 日志框架添加的。我怎样才能摆脱它们?

【问题讨论】:

    标签: asp.net-core serilog


    【解决方案1】:

    这可以通过将浓缩器插入日志管道来实现:

    .Enrich.With(new RemovePropertiesEnricher())
    

    地点:

    class RemovePropertiesEnricher : ILogEventEnricher
    {
        public void Enrich(LogEvent le, ILogEventPropertyFactory lepf)
        {
            le.RemovePropertyIfPresent("SourceContext");
            le.RemovePropertyIfPresent("RequestId");
            le.RemovePropertyIfPresent("RequestPath");
        }
    }
    

    【讨论】:

    • @NicholasBlumhardt 不是为了劫持帖子,而是这些自动注入的内容和原因?
    • 我也有同样的问题。在请求管道的早期某处,创建了 HostingLogScope。正如您从源代码中看到的那样,此日志范围负责添加(大多数)有问题的属性。我错过了它确切发生位置的链接,但 Serilog 然后获取此上下文对象并将其转换为日志条目的属性。由于上下文是一个 IReadOnlyList>,它自然映射
    • 这不适用于“例外”字段。
    • 很好的答案。有没有办法同时删除子属性(属性的属性)?
    • 我想知道为什么 [JsonIgnore] 属性不适用于此?
    【解决方案2】:

    是的,您可以摆脱它们。尝试使用日志模板:

    _loggerConfiguration.WriteTo.Console(LogLevel.Debug, "{Timestamp:yyyy-MM-dd HH:mm:ss.fff} [{Level}] {Message}{NewLine}{Exception}");
    

    在这种情况下,您不会在输出中看到提及的属性。

    【讨论】:

    • 感谢 Leonid,我的控制台日志工作正常。因为就像在您的示例中一样,我在那里有一个不包含这些参数的消息模板。登录到文件时如何摆脱它们:.WriteTo.RollingFile(new JsonFormatter(), logFilePath, LogEventLevel.Information)?我不想在这里提供模板,只想记录原始 json。
    • 目前不支持此功能(我查看了源代码)。我看到了一种解决方法,您可以使用一种形成 JSON 文件的模板。或者您可以实现此功能并向其存储库创建拉取请求。
    【解决方案3】:

    当你记录一个对象时,Serilog 有destructuring 的概念。

    如果您想删除(忽略)这些对象中的某些属性以进行日志记录,则有两种选择。

    1. 您可以使用属性。看看这个post
    2. 然后是by-ignoring。你需要这个 Destructurama.ByIgnoring nuget

    请注意,您不应同时使用两者。两者都使用对我不起作用。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-02-20
      • 2013-06-25
      • 1970-01-01
      • 1970-01-01
      • 2017-05-29
      • 1970-01-01
      相关资源
      最近更新 更多