【发布时间】:2019-10-25 15:14:26
【问题描述】:
我正在使用 NLog 和 JsonLayout 布局记录我的应用程序的数据。我为我的对象获得的输出不包括类型,我希望它与 JSON 的其余部分一起记录类型。我正在记录的集合具有各种类型的项目,我希望日志能够明确说明这些项目是什么,而读者不必根据其属性推断它是哪种类型。
这就是我得到的
"things": [
[
{
"PropertyA": 1,
"PropertyB": 2,
}
],
[],
[]
]
我想记录的是 JSON.Net 的输出:
"things": [
[
{
"$type": "MyNamespace.MyObject, MyAssembly, Version=1.0.0.0, Culture=neutral, PublicKeyToken=1234567890123456",
"PropertyA": 1,
"PropertyB": 2,
}
],
[],
[]
]
我如何实现这一目标?如果还有其他同样好的方法,我不会使用 JsonLayout。
【问题讨论】:
-
这没有实现。我现在建议复制 JsonLayout 并将其添加到代码中:github.com/NLog/NLog/blob/master/src/NLog/Layouts/JsonLayout.cs。还要检查github.com/NLog/NLog/wiki/Register-your-custom-component
-
如果您创建了自己的 LogJson 扩展方法,该方法使用 Json.Net 将您的对象序列化为 JSON,然后将字符串传递给 NLog,该怎么办?
-
LayoutRenderer使用 Json.NET 的示例可以在 this answer 到 Layout NLog properties as JSON? 中找到。