2017-10-02 2 views
2

私はIsTraceEnabled(同等の機能IsDebugEnabled ....)の結果に疑念を抱いています。NLog:IsTraceEnabledの予期せぬ不一致

私は誰もが私が間違って何をすべきか考えを持っているtrue

<rules> 
    <!-- add your logging rules here --> 
    <logger name="TEST" minlevel="Error" writeTo="logfile" final="true"/> 
    <logger name="*" minlevel="Trace" writeTo="logfile"> 
     <filters> 
     <when condition="equals('${logger}','System.ServiceModel.MessageLogging')" action="Ignore" /> 
     <when condition="equals('${logger}','XPO')" action="Ignore" /> 
     </filters> 
    </logger> 
    </rules> 

予期しない応答を取得するよりも、私はNLog.LogManager.GetLogger("TEST")を呼び出した場合?

答えて

0

最終属性は、(最小)レベルのルールと名前(フィルタ)と組み合わせて適用されます。

だからあなたの場合:ロガーが「TEST」で、最小レベルがエラーである場合

<logger name="TEST" minlevel="Error" writeTo="logfile" final="true"/> 

、最終的なログファイルとしてマークして書きます。

logeventはデバッグとして記述されているため、最初のルールと一致しませんが、2番目のルールと一致します。

<logger name="*" minlevel="Trace" writeTo="logfile"> 
    ... 
</logger> 
+0

最終的な属性を削除すると、同じ問題が発生します –

+0

はい、最終的な属性がなければ、2番目のルールが適用されます。 2番目のルールのフィルタはロギング時に評価されます(たとえば、メッセージ長が10未満の場合もあります)ので、ルールはロガー "TEST"に対して有効です。 – Julian

+0

ログレベルが有効かどうかを確認する他の可能性はありますか? –

関連する問題