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