【发布时间】:2017-04-13 05:41:26
【问题描述】:
我们的旧式日志记录框架 (.NET 4.5) 将遍历 Exception.data 并记录每个 Exception.data 键值。记录与当前异常相关的上下文道具非常好。有没有办法配置 Serilog 来记录 Exception.data 键值?
Serilog 2
【问题讨论】:
标签: serilog
我们的旧式日志记录框架 (.NET 4.5) 将遍历 Exception.data 并记录每个 Exception.data 键值。记录与当前异常相关的上下文道具非常好。有没有办法配置 Serilog 来记录 Exception.data 键值?
Serilog 2
【问题讨论】:
标签: serilog
这是 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 包,它具有许多常见异常类型的智能。
【讨论】: