web-dev-qa-db-ja.com

*すべての*ターゲットのロガー名前空間の特定のレベルからのみログを記録するようにNLogを構成する方法

次のロガーを構成しています。

<nlog xmlns="http://www.nlog-project.org/schemas/NLog.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <targets>
    <target name="file" xsi:type="File" fileName="trace.log"/>
    <target name="trace" xsi:type="OutputDebugString"/>
    <target name="console" xsi:type="ColoredConsole" />
  </targets>
  <rules>
      <logger name="*" minlevel="Info" writeTo="file" />
      <logger name="*" minlevel="Info" writeTo="trace" />
      <logger name="*" minlevel="Info" writeTo="console" />
  </rules>
</nlog>

すべてのロガーについて、Component。*のすべてをWARN以降からのみログに記録したい。 NHibernateを使用すると、これは簡単です。

<logger name="NHibernate.SQL">
  <level value="OFF"/>
</logger>

以下を追加しようとしました:

<logger name="Component.*" minlevel="Warn" final="true" />

これは機能しません。

allターゲットのロガー名前空間の特定のレベルからのみログを記録する方法。

12
Ramon Smits

解決策は次のとおりです。

<logger name="Component.*" maxlevel="Info" final="true" />

基本的に、ロガーXの場合、writeTo属性がないため、Info以下に一致するすべてのログエントリをスキップします。

それはここに文書化されています:

https://github.com/nlog/NLog/wiki/Configuration-file

サンプルについて:

<logger name="Name.Space.*" minlevel="Debug" maxlevel="Error" final="true" />
10
Ramon Smits