2016-08-23 2 views
1

私は外部変数を使用して最小ログレベルを変更できるようにNLogでLayoutsを使用したい: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="Debug"value="LogLevel.Debug"に置き換えようとしました。 <logger>

答えて

0

minlevelmaxlevellevel属性は、文字列を修正する必要があります。

この場合、<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

関連する問題