log4netのConfig


久々にC#を使って、LOGを出力する際にいろいろ調べたのがめんどくさかったので
自分なりに使いやすいLOG4NET用のコンフィグを残しておく。

## アセンブリに関する情報
AssemblyInfo.csに以下を追記。
一番下でOK

``` C#
[assembly: log4net.Config.XmlConfigurator(ConfigFile = @"Log4net.Config.xml", Watch = true)]
```

## Configの実際の内容
以下の内容のLog4net.Config.xmlを作成

``` xml
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <log4net>

    <!-- 通常ログ -->
    <appender name="InfoLogAppender" type="log4net.Appender.RollingFileAppender">
      <File value=".\\Logs\\Info_" />
      <!-- ファイル名は日付ごと -->
      <param name="DatePattern" value='yyyyMMdd".log"' />

      <param name="RollingStyle" value="date" />
      <param name="StaticLogFileName" value="false" />
      <param name="MaximumFileSize" value="10MB" />
      <param name="MaxSizeRollBackups" value="10" />

      <param name="AppendToFile" value="true" />
      <filter type="log4net.Filter.LevelRangeFilter">
        <param name="LevelMax" value="WARN" />
        <param name="LevelMin" value="INFO" />
      </filter>

      <layout type="log4net.Layout.PatternLayout">
        <ConversionPattern value="%date [%thread] [%-5level] %class %method (L%line) - %message%n" />
      </layout>
    </appender>

    <!-- エラーログ -->
    <appender name="ErrorLogAppender" type="log4net.Appender.RollingFileAppender">
      <File value=".\\Logs\\Error_" />
      <!-- ファイル名は日付ごと -->
      <param name="DatePattern" value='yyyyMMdd".log"' />

      <param name="RollingStyle" value="date" />
      <param name="StaticLogFileName" value="false" />

      <param name="AppendToFile" value="true" />

      <filter type="log4net.Filter.LevelRangeFilter">
        <param name="LevelMax" value="FATAL" />
        <param name="LevelMin" value="ERROR" />
      </filter>

      <param name="MaximumFileSize" value="10MB" />
      <param name="MaxSizeRollBackups" value="10" />

      <layout type="log4net.Layout.PatternLayout">
        <ConversionPattern value="%date [%thread] [%-5level] %class %method (L%line) - %message%n" />
      </layout>
    </appender>

    <!-- デバッグ用：分割ファイル出力 -->
    <appender name="DebugLogAppender" type="log4net.Appender.RollingFileAppender">
      <File value=".\\Logs\\Trace_" />
      <!-- ファイル名は日付ごと -->
      <param name="DatePattern" value='yyyyMMdd".log"' />

      <!-- ファイル名は日付ごと -->
      <param name="RollingStyle" value="date" />
      <param name="StaticLogFileName" value="false" />

      <param name="AppendToFile" value="true" />

      <filter type="log4net.Filter.LevelRangeFilter">
        <param name="LevelMax" value="FATAL" /> 
        <param name="LevelMin" value="TRACE" />
      </filter>

      <param name="MaximumFileSize" value="10MB" />
      <param name="MaxSizeRollBackups" value="10" />

      <layout type="log4net.Layout.PatternLayout">
        <ConversionPattern value="%date [%thread] [%-5level] %class %method (L%line) - %message%n" />
      </layout>
    </appender>
    
    <!-- コンソール -->
    <appender name="ColoredConsole"  type="log4net.Appender.ColoredConsoleAppender">
      <mapping>
        <level value="FATAL" />
        <foreColor value="White" />
        <backColor value="Red" />
      </mapping>
      <mapping>
        <level value="ERROR" />
        <foreColor value="White" />
        <backColor value="Purple" />
      </mapping>
      <mapping>
        <level value="WARN" />
        <foreColor value="Purple" />
        <backColor value="White" />
      </mapping>
      <mapping>
        <level value="INFO" />
        <foreColor value="White" />
        <backColor value="Blue" />
      </mapping>
      <mapping>
        <level value="DEBUG" />
        <foreColor value="White" />
        <backColor value="Green" />
      </mapping>

      <layout type="log4net.Layout.PatternLayout">
        <conversionPattern value="%d[%t] %p - %m%n"/>
      </layout>
    </appender>

    <root>
      <!-- TRACE以上のログを記録 -->
      <level value="TRACE" />
      <!-- 使用する Appender -->
      <appender-ref ref="InfoLogAppender" />
      <appender-ref ref="ErrorLogAppender" />
      <appender-ref ref="DebugLogAppender" />
      <appender-ref ref="ColoredConsole" />
    </root>

  </log4net>
</configuration>
```