是否可以将JsonAttribute转换为Integer

时间:2019-03-29 15:21:05

标签: c# nlog

是否可以使用JsonLayout中的Nlog作为Interger花费一个JsonAttribute。属性始终以字符串形式输出。 我尝试了以下代码示例:

到目前为止,该版本是正确的,只是字符串而不是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 个答案:

答案 0 :(得分:2)

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