如何记录到事件属性而不将它们放在消息中?
How log to event properties without placing them in the message?
我目前使用 NLog 登录 Json 格式。我想在我的日志中的“eventProperties”下记录事件参数,而不将它们包含在消息属性中。
当前 nlog.config:
<target name="jsonFile" xsi:type="Console">
<layout xsi:type="JsonLayout">
<attribute name="time" layout="${longdate}" />
<attribute name="level" layout="${level:upperCase=true}"/>
<attribute name="message" layout="${message}" />
<attribute name="eventProperties" encode="false" >
<layout xsi:type='JsonLayout' includeAllProperties="true" maxRecursionLimit="6"/>
</attribute>
</layout>
</target>
目前调用它:
_logger.LogDebug(20, "Doing hard work! {logInfo}", t2);
记录以下内容:
{ "time": "2022-05-19 08:24:15.1395", "level": "DEBUG", "message": "Doing hard work! Test", "eventProperties": { "logInfo": {"MyProperty":"Hello2", "MyProperty2":"Testing2", "MyModel":{"MyProperty":"Hello", "MyProperty2":"Testing"}}, "EventId": 20 } }
但是,我希望能够在不阻止 t2 被记录到 JSON:
的 eventProperties 部分的情况下使用以下内容进行记录
_logger.LogDebug(20, "Doing hard work!", t2);
消息 属性 的输出不再包含 test
:
"message": "Doing hard work!"
如何在不从 eventProperties 中删除消息的情况下从消息中删除 属性?
编辑 - 我正在为 .LogDebug()
使用 Microsoft ILogger 抽象
您可以使用 raw=true
:
输出 message-template(而不是格式化消息)
<attribute name="message" layout="${message:raw=true}" />
另请参阅:https://github.com/NLog/NLog/wiki/How-to-use-structured-logging
我目前使用 NLog 登录 Json 格式。我想在我的日志中的“eventProperties”下记录事件参数,而不将它们包含在消息属性中。
当前 nlog.config:
<target name="jsonFile" xsi:type="Console">
<layout xsi:type="JsonLayout">
<attribute name="time" layout="${longdate}" />
<attribute name="level" layout="${level:upperCase=true}"/>
<attribute name="message" layout="${message}" />
<attribute name="eventProperties" encode="false" >
<layout xsi:type='JsonLayout' includeAllProperties="true" maxRecursionLimit="6"/>
</attribute>
</layout>
</target>
目前调用它:
_logger.LogDebug(20, "Doing hard work! {logInfo}", t2);
记录以下内容:
{ "time": "2022-05-19 08:24:15.1395", "level": "DEBUG", "message": "Doing hard work! Test", "eventProperties": { "logInfo": {"MyProperty":"Hello2", "MyProperty2":"Testing2", "MyModel":{"MyProperty":"Hello", "MyProperty2":"Testing"}}, "EventId": 20 } }
但是,我希望能够在不阻止 t2 被记录到 JSON:
的 eventProperties 部分的情况下使用以下内容进行记录_logger.LogDebug(20, "Doing hard work!", t2);
消息 属性 的输出不再包含 test
:
"message": "Doing hard work!"
如何在不从 eventProperties 中删除消息的情况下从消息中删除 属性?
编辑 - 我正在为 .LogDebug()
您可以使用 raw=true
:
<attribute name="message" layout="${message:raw=true}" />
另请参阅:https://github.com/NLog/NLog/wiki/How-to-use-structured-logging