JObject/JToken 没有登录 NLog
JObject/JToken doesnt Log on NLog
我有一个 class 并且一些属性是动态的,当我的 class 被传递给某个动作时 API 该方法被理解为一个 JObject,问题是登录NLOG,当我尝试这样做时,我的动态属性日志显示“[]”示例如下:
myProperty:[
[[]],
[],
[]
]
当我尝试将整个 class Objet 转换为 JObject(Newtonsoft) 时,我的所有日志都将是 [],如下所示:
{ "time": "2019-05-13 18:12:16.2224", "level": "DEBUG", "JsonProperties": { "log": [[[[[]],[[]],[[]],[[[[]],[[]],[[]]]],[[[[[[[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]]]]],[[[[]],[[]],[[]],[[]],[[]],[[[[]],[[]],[[]]]],[[[[[]],[[]]],[[[]],[[]]]]],[[[[[]],[[]],[[]]],[[[]],[[]],[[]]]]],[[[[[]],[[]]],[[[]],[[]]]]]]]]]]]],[[[[[]],[[]],[[]],[[[[]],[[]],[[]],[[]]]]]]]] }, "message": "Testando performance no LoggerGenerator.", "log": [[],[]] }
我解决了这个问题,将 JObject 转换为字典并完美运行,问题是这样做的开销。
我需要在不创建自己的方法并转换为字典的情况下解决这个问题
谢谢。
JObject
是一个 IEnumerable
,NLog 将尝试枚举它。
您可以执行以下操作:
logger.Info("Hello {0}", jObject); // No structured logging, becomes string.Format
logger.Info("Hello {$myobj}", jObject); // Structured logging that forces JObject.ToString
logger.Info("Hello {myobj}", jObject.ToString()); // Converts to string upfront
您还可以通过重写这些来自定义 NLog 处理特殊对象(如 JObject)的方式:
- NLog.Config.ConfigurationItemFactory.Default.ValueFormatter
- NLog.Config.ConfigurationItemFactory.Default.JsonConverter
我有一个 class 并且一些属性是动态的,当我的 class 被传递给某个动作时 API 该方法被理解为一个 JObject,问题是登录NLOG,当我尝试这样做时,我的动态属性日志显示“[]”示例如下:
myProperty:[
[[]],
[],
[]
]
当我尝试将整个 class Objet 转换为 JObject(Newtonsoft) 时,我的所有日志都将是 [],如下所示:
{ "time": "2019-05-13 18:12:16.2224", "level": "DEBUG", "JsonProperties": { "log": [[[[[]],[[]],[[]],[[[[]],[[]],[[]]]],[[[[[[[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]]]]],[[[[]],[[]],[[]],[[]],[[]],[[[[]],[[]],[[]]]],[[[[[]],[[]]],[[[]],[[]]]]],[[[[[]],[[]],[[]]],[[[]],[[]],[[]]]]],[[[[[]],[[]]],[[[]],[[]]]]]]]]]]]],[[[[[]],[[]],[[]],[[[[]],[[]],[[]],[[]]]]]]]] }, "message": "Testando performance no LoggerGenerator.", "log": [[],[]] }
我解决了这个问题,将 JObject 转换为字典并完美运行,问题是这样做的开销。
我需要在不创建自己的方法并转换为字典的情况下解决这个问题
谢谢。
JObject
是一个 IEnumerable
,NLog 将尝试枚举它。
您可以执行以下操作:
logger.Info("Hello {0}", jObject); // No structured logging, becomes string.Format
logger.Info("Hello {$myobj}", jObject); // Structured logging that forces JObject.ToString
logger.Info("Hello {myobj}", jObject.ToString()); // Converts to string upfront
您还可以通过重写这些来自定义 NLog 处理特殊对象(如 JObject)的方式:
- NLog.Config.ConfigurationItemFactory.Default.ValueFormatter
- NLog.Config.ConfigurationItemFactory.Default.JsonConverter