如何在nlog中将属性序列化为json

Posted

技术标签:

【中文标题】如何在nlog中将属性序列化为json【英文标题】:How to serialize property to json in nlog 【发布时间】:2021-12-01 04:45:42 【问题描述】:

我有以下配置:

<target>
<layout xsi:type="JsonLayout">
 <attribute name="Foo" layout="$event-properties:item=Foo:@" />
</layout>
</target>

这是推送到输出的结果文档:


   "Foo": " \"Nested\": \"Json\"  "

相反,我想要以下结果:


   "Foo":   "Nested": "Json" 

但是,我只想将 Foo 属性呈现为 json,而不是所有事件属性。嵌套的 json 布局没有源。如何解决这个问题?

【问题讨论】:

【参考方案1】:

NLog JsonLayout 将自动修复来自属性布局的输出,因此保留字符会正确转义。

但如果您已经知道输出将是有效的 json(在使用 format=@ 时发生),那么您可以像这样指定 encode="false"

<target>
 <layout xsi:type="JsonLayout">
   <attribute name="Foo" layout="$event-properties:item=Foo:format=@" encode="false" />
 </layout>
</target>

【讨论】:

以上是关于如何在nlog中将属性序列化为json的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Ruby 中将对象序列化为 json

如何在 Scala 中将 Map 序列化为 JSON?

如何在 C# 中将 JSON 数据序列化为 XML

如何在 .NET Core 中将 JSON 序列化为没有转义字符的字符串?

如何在Objective C中将对象序列化为JSON? [复制]

在 symfony JMS PHP 中将单个字符串属性反序列化为对象