【问题标题】:How to log Exception.data key / values with Serilog 2?如何使用 Serilog 2 记录 Exception.data 键/值?
【发布时间】:2017-04-13 05:41:26
【问题描述】:

我们的旧式日志记录框架 (.NET 4.5) 将遍历 Exception.data 并记录每个 Exception.data 键值。记录与当前异常相关的上下文道具非常好。有没有办法配置 Serilog 来记录 Exception.data 键值?

Serilog 2

【问题讨论】:

    标签: serilog


    【解决方案1】:

    这是 Serilog 的等效代码:

    public class ExceptionDataEnricher : ILogEventEnricher
    {
        public void Enrich(LogEvent logEvent, ILogEventPropertyFactory propertyFactory)
        {
            if (logEvent.Exception == null ||
                logEvent.Exception.Data == null ||
                logEvent.Exception.Data.Count == 0) return;
    
            var dataDictionary = logEvent.Exception.Data
                .Cast<DictionaryEntry>()
                .Where(e => e.Key is string)
                .ToDictionary(e => (string)e.Key, e => e.Value);
    
            var property = propertyFactory.CreateProperty("ExceptionData", dataDictionary, destructureObjects: true);
    
            logEvent.AddPropertyIfAbsent(property);
        }
    }
    

    您可以在this Gist找到完整的程序配置。

    一个更复杂和灵活的选择是使用Serilog.Exceptions 包,它具有许多常见异常类型的智能。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-05-24
      • 2017-07-28
      • 2022-09-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多