Можно ли преобразовать JsonAttribute в целое число - PullRequest
0 голосов
/ 29 марта 2019

Возможно ли использование Nlog в JsonLayout атрибута Json в качестве расходов Interger. Свойства всегда выводятся в виде строки. Я пробовал следующий пример кода:

Пока издание верное, просто как строка, а не как Ineger.

Может ли кто-нибудь помочь мне понять, что не так?

LayoutRenderer.Register("level", info => info.Level.Ordinal * 100);
var fieldsLayout = new JsonLayout
{
    RenderEmptyObject = false,
    SuppressSpaces = true
};

fieldsLayout.Attributes.Add(new JsonAttribute("channel", "${channel}"));
fieldsLayout.Attributes.Add(new JsonAttribute("level", "${level}"));

1 Ответ

2 голосов
/ 29 марта 2019

Думаю, это плохая идея переопределить рендерер по умолчанию ${level}.

Простое решение для уровня просто делает это:

fieldsLayout.Attributes.Add(new JsonAttribute("level", "${level:format=ordinal}") { Encode = false });

Но если вам это нужноумножить на 100, тогда вам нужно зарегистрировать пользовательский макет рендеринга:

LayoutRenderer.Register("level100", info => info.Level.Ordinal * 100);
fieldsLayout.Attributes.Add(new JsonAttribute("level", "${level100}") { Encode = false });
...