JObject / JToken не входит в систему NLog - PullRequest
0 голосов
/ 13 мая 2019

У меня есть класс, и некоторые свойства являются динамическими, когда мой класс передается какому-либо 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 в словарь и работает отлично, проблема в том, чтобы сделать это.

Мне нужно решить эту проблему без создания собственного метода и преобразования в словарь

Спасибо.

1 Ответ

1 голос
/ 13 мая 2019

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
...