2017-11-24 12 views
0

を使用してNlog LOGLEVELを制御し、それが動作しない方法:例えばLOG_LEVELはLogLevel.Info環境変数を使用してNlog設定でログレベルを上書きしようとすると、環境変数

同じ設定とに設定されている

<logger name="*" writeTo="console"> 
      <filters> 
       <when condition="level >= '${environment:LOG_LEVEL}' " action="Ignore"/> 
      </filters>  
</logger> 

NlogのEnv varの作品:

<variable name="myvar1" value="LogLevel.Info"/> 
<logger name="*" writeTo="console"> 
      <filters> 
       <when condition="level >= '${myvar1}' " action="Ignore"/> 
      </filters>  
</logger> 

どのようにヒントenv変数を使用するには?いくつかの拡張を書く?

+0

InternalLoggerを有効にしようとしましたが、エラー/例外がありますか?実行時に環境変数を変更すると、アプリケーションを再起動するまで効果がないことに注意してください。 –

+0

はい、トークンの解析に問題があるトレースを見ました。 NLogはそれをサポートしていないようです。 2017-11-24 16:12:09.4999 'ConditionBasedFilter.condition'を 'level> = $ {environment:LOG_LEVEL}'に設定するとデバッグを設定する ' 2017-11-24 16:12:09.4999プロパティ' Condition 'On' NLog.Filters.ConditionBasedFilter '例外:NLog.Conditions.ConditionParseException:無効な句読点:NLog.Conditions.ConditionTokenizer.GetNextToken()の$ '' ' – lenisha

+0

NLog変数を値に割り当てることは、 $ {environment:LOG_LEVEL}の中で使用し、when-filter?でNLog変数を使用します。 –

答えて

0

私は、これはもう少し長ったらしいですけど、誰かが適切な修正を作成するまで、多分それは、動作します:ところで

<logger name="*" writeTo="console"> 
      <filters> 
       <when condition="(level >= LogLevel.Fatal and equals('${environment:LOG_LEVEL}','LogLevel.Fatal)" action="Log"/> 
       <when condition="(level >= LogLevel.Error and equals('${environment:LOG_LEVEL}','LogLevel.Error')" action="Log"/> 
       <when condition="(level >= LogLevel.Info and equals('${environment:LOG_LEVEL}','LogLevel.Info')" action="Log"/> 
       <when condition="(level >= LogLevel.Debug and equals('${environment:LOG_LEVEL}','LogLevel.Debug')" action="Log"/> 
       <when condition="(level >= LogLevel.Trace and equals('${environment:LOG_LEVEL}','LogLevel.Trace')" action="Log"/> 
      </filters>  
</logger> 

。なぜあなたの元の質問には、それよりも小さいものではなく、より大きなものがあるのでしょうか? LOG_LEVELをWarnに設定した場合、すべての警告を記録するか、悪化するかを予測します。