JObject / JToken不登录NLog

时间:2019-05-13 19:30:28

标签: c# asp.net nlog

我有一个类,并且某些属性是动态的,当我的类传递给某些操作API时,该方法就无法理解为JObject,问题是登录NLOG,当我尝试执行此操作时,我的属性中的日志动态显示如下“ []”示例:

myProperty:[

    [[]],
    [],
    []
]

当我尝试将类Objet全部转换为JObject(Newtonsoft)时,我的所有日​​志将像[]一样波纹管:

{ "time": "2019-05-13 18:12:16.2224", "level": "DEBUG", "JsonProperties": { "log": [[[[[]],[[]],[[]],[[[[]],[[]],[[]]]],[[[[[[[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]]]]],[[[[]],[[]],[[]],[[]],[[]],[[[[]],[[]],[[]]]],[[[[[]],[[]]],[[[]],[[]]]]],[[[[[]],[[]],[[]]],[[[]],[[]],[[]]]]],[[[[[]],[[]]],[[[]],[[]]]]]]]]]]]],[[[[[]],[[]],[[]],[[[[]],[[]],[[]],[[]]]]]]]] }, "message": "Testando performance no LoggerGenerator.", "log": [[],[]] }

我解决了这个问题,将JObject转换为Dictionary并可以正常工作,但这样做的开销很大。

我需要在不创建自己的方法的情况下解决此问题,并转换为Dictionary

谢谢。

1 个答案:

答案 0 :(得分:1)

try ... catchJObject,NLog会尝试枚举它。

您可以执行以下操作:

IEnumerable

您还可以通过覆盖以下内容来自定义NLog处理特殊对象(如JObject)的方式:

  • NLog.Config.ConfigurationItemFactory.Default.ValueFormatter
  • NLog.Config.ConfigurationItemFactory.Default.JsonConverter