2

Log4netを使い始めることができましたが、すべてのクラスで同じアペンダーを使用しています。一部のクラスで特別なアペンダーを使用したい。

以下は私のログファイルです:

<appender name="InfoRollingLogFileAppender" type="log4net.Appender.RollingFileAppender,log4net">
  <param name="File" value="C:\Test.log"/>
  <param name="RollingStyle" value="Date"/>
  <param name="DatePattern" value="_yyyy-MM-dd.log"/>
  <param name="StaticLogFileName" value="true"/>
  <maximumFileSize value="100KB" />
  <appendToFile value="true" />
  <lockingModel type="log4net.Appender.FileAppender+MinimalLock" />
  <layout type="log4net.Layout.PatternLayout">
    <conversionPattern value="%newline ---------------START---------------------- %newline %date - %message %newline ----------------END--------------------- %newline" />
  </layout>
  <filter type="log4net.Filter.LevelRangeFilter">
    <levelMin value="DEBUG" />
    <levelMax value="DEBUG" />
  </filter>
  <filter class="log4net.Filter.DenyAllFilter"/>
</appender>

<root>
  <level value="DEBUG" />
  <appender-ref ref="InfoRollingLogFileAppender" />
</root>

これが私のコードでどのように使用しているかです:

private static readonly log4net.ILog log = log4net.LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);

次に、ログに記録するためにを使用しますlog.Debug("Goes in Log File")

私の質問は、特定のクラスに異なるアペンダーを設定するにはどうすればよいですか?

4

1 に答える 1

3

ロガーごとにアペンダーを定義できます。これは、あなたの場合、「クラスごと」に変換されます。

<root>
   <level value="DEBUG" />
   <appender-ref ref="InfoRollingLogFileAppender" />
</root>
<logger name="YourNameSpace.YourClass" additivity="false">
   <level value="DEBUG" />
   <appender-ref ref="YourOtherAppender" />
</logger>

重要なのはadditivityフラグです。フラグがないと、ルート(または親)ロガーで定義されたアペンダーが継承されます。

于 2012-11-22T06:59:16.990 に答える