是否可以使用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}"));
答案 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 });