在NLog中,是否可以使用布局来定义日志级别?

时间:2016-08-23 11:03:03

标签: c# logging nlog

我想在NLog中使用Layouts来使用外部变量更改最小日志级别:

EditText

启动NLog后,所有日志级别(例如:Tracing,Debug,Info,...)都设置为<nlog> <variable name="loglevel" value="Debug"/> <targets> <target ... /> </targets> <rules> <logger name="*" minlevel="${loglevel}" writeTo="LogFile" /> </rules> </nlog> ,表示NLog无法正确解析false属性。

NLog布局功能似乎仅适用于minlevel属性。 我想要实现的目标:在我的真实应用中,loglevel不是常量,而是自定义layout renderer

我还尝试将target替换为value="Debug"但没有成功。

1 个答案:

答案 0 :(得分:0)

minlevel上的maxlevellevel<logger>属性应为固定字符串。

在这种情况下,您可以使用<filter>,例如

<nlog>
   <variable name="loglevel" value="Debug"/>
   <targets>
      <target ... /> 
   </targets>
   <rules>
      <logger name="*" writeTo="LogFile" >
          <filter condition="${level} >= ${loglevel}" action="Log">
      </logger>
   </rules>
</nlog>

请参阅docs