2016-08-23 65 views
1

我想用Layouts在NLOG能够改变使用外部变量的最低日志级别:在NLog中,是否可以使用布局来定义日志级别?

<nlog> 
    <variable name="loglevel" value="Debug"/> 
    <targets> 
     <target ... /> 
    </targets> 
    <rules> 
     <logger name="*" minlevel="${loglevel}" writeTo="LogFile" /> 
    </rules> 
</nlog> 

开始NLOG,所有日志级别后(如:跟踪,调试,信息,... )设置为false这表明NLog未能正确解析minlevel属性。

NLog布局功能似乎只适用于target属性。 我想实现的是:在我的真实应用程序中,loglevel不是一个常量,而是一个自定义的layout renderer

我也试图用代替value="LogLevel.Debug"没有成功。

回答

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

+0

过滤条件的工作,但仅当被定义为一个常数例如:'水平> = LogLevel.Debug'。我无法使其作为变量工作:'level> = $ {loglevel}'。此外,使用的语法似乎与您的语法略有不同,请参阅此处:https://github.com/NLog/NLog/wiki/Conditions – tigrou

相关问题