我们的旧日志框架 (.NET 4.5) 将迭代 Exception.data 并记录每个 Exception.data 键值。记录与当前异常相关的上下文道具非常好。有没有办法配置 Serilog 来记录 Exception.data 键值?
序列号 2
这是 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);
}
}
Run Code Online (Sandbox Code Playgroud)
您可以在此 Gist 中找到带有配置的完整程序。
一个更复杂和灵活的选择是使用Serilog.Exceptions包,它具有针对许多常见异常类型的智能。
归档时间: |
|
查看次数: |
713 次 |
最近记录: |