我正在处理的项目目前将日志发送到ElasticSearch,并与日志消息一起,我希望使用以下模型逐个包括一些其他元数据:
log.Warning("Something went wrong", new
{
EmailAddress = "[email protected]",
});
起初,我认为可以通过扩展接收器(使用ILogEventSink.Emit(LogEvent logEvent);
)并将其写入最终日志输出中来轻松地访问这些属性。但是我注意到,只有在您对日志消息进行解构时才填充属性。
是否有任何方法可以访问上述代码示例中传递的对象?还是将元数据附加到您的消息而无需在日志消息中使用解构的替代方法?
不确定您的要求,但:
log.ForContext("EmailAddress","[email protected]")
.Warning("Something went wrong")
将EmailAddress
属性添加到捕获的集中[您将在消息模板的{Properties}
字段中以及[大概]在交付给ES的消息中看到它们的呈现]
我很确定您示例中的arg将被忽略-消息模板中的孔被args依次填充-任何其他内容都将被忽略。 (我想,您可以通过安装Serilog Analyzer或阅读Serilog测试来确认或排除我的猜测)