【问题标题】:How to configure Serilog output template for displaying only certain properties如何配置 Serilog 输出模板以仅显示某些属性
【发布时间】:2019-12-04 15:30:39
【问题描述】:

我正在尝试将Serilog 配置为能够推送属性,但在日志中仅显示其中一些属性。

目前我的serilog配置如下:

Log.Logger = new LoggerConfiguration().Enrich.FromLogContext()
                .WriteTo.File(logpath)
                .WriteTo
                .Console(outputTemplate: "{Timestamp:yyyy-MM-dd HH:mm:ss.fff zzz} [{Level:u3}] {Properties} {Message}")
                .CreateLogger();

假设我有一个名为MyProperty 的属性,我只想将它显示在日志中:

string MyProperty="some value";
string MyOtherProperty="some other value";
LogContext.Push("MyProperty",MyProperty);
LogConetext.Push("MyOtherProperty",MyOtherProperty);

当我开始记录时,Properties 部分将如下所示:

`{SourceContext= "[something]",Myproperty=[...],MyOtherProperty=[...]}`

如何将模板设置为仅显示 MyProperty(甚至不显示 LogContext)?

我试过这样无济于事:

outputTemplate: "{Timestamp:yyyy-MM-dd HH:mm:ss.fff zzz} [{Level:u3}] {Properties:MyProperty} {Message}")

【问题讨论】:

    标签: templates asp.net-core logging serilog


    【解决方案1】:

    无论您是否写Enrich.FromLogContext(),似乎默认添加了LogContext。这是一个解决方法,您可以使用以下自定义丰富器来丰富记录器,从 EventLog 中删除这些属性。

    public class SerilogContextEnricher : ILogEventEnricher
    {
        public void Enrich(LogEvent logEvent, ILogEventPropertyFactory propertyFactory)
        {
            logEvent.RemovePropertyIfPresent("ActionId");
            logEvent.RemovePropertyIfPresent("ActionName");
            logEvent.RemovePropertyIfPresent("RequestId");
            logEvent.RemovePropertyIfPresent("RequestPath");
            logEvent.RemovePropertyIfPresent("CorrelationId");
            logEvent.RemovePropertyIfPresent("MyOtherProperty");
        }
    }
    

    如下配置:

    Log.Logger = new LoggerConfiguration()
                .Enrich.FromLogContext()
                .Enrich.With<SerilogContextEnricher>()
                .WriteTo.File("logs/log.txt")
                .WriteTo.Console(outputTemplate: "{Timestamp:yyyy-MM-dd HH:mm:ss.fff zzz} [{Level:u3}] {Properties} {Message}")
                .CreateLogger();
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-09-11
      • 1970-01-01
      • 1970-01-01
      • 2018-07-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多