是否可以将 JsonAttribute 转换为 Integer

Is it possible to convert a JsonAttribute to an Integer

是否可以在 JsonLayout 中使用 Nlog 将 JsonAttribute 作为 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}"));

认为覆盖默认 ${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 });