2016-08-23 55 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

相關問題