log4net導入・設定方法

①nugetでlog4netインストール

②AssemblyInfo.csにLog4net設定値の保存場所を設定

```csharp:\Properties\AssemblyInfo.cs
[assembly: log4net.Config.XmlConfigurator(Watch = true)]
```
→Web.configからLog4net設定値がよみこまれる

③Web.configにLog4net設定値記載
log4netの設定を セクションに書くことを宣言しておきます。

```xml:Web.config
  <configSections>
    <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler,log4net"/>
  </configSections>
```

ログの出力形態（どこに出力するか）を記述します。

```xml:Web.config
  <log4net>
    <!-- ファイルアペンダ(ローテーションあり) -->
    <appender name="RollingLogFileAppender" type="log4net.Appender.RollingFileAppender,log4net">
      <param name="File" value="C:\weblogger\log_upload."/>"/>
      <param name="AppendToFile" value="true"/>
      <param name="MaxSizeRollBackups" value="10"/>
      <param name="MaximumFileSize" value="5MB"/>
      <param name="RollingStyle" value="date"/>
      <param name="StaticLogFileName" value="false"/>
      <param name="DatePattern" value="&quot;.&quot;yyyyMMdd&quot;.log&quot;"/>
      <layout type="log4net.Layout.PatternLayout,log4net">
        <param name="ConversionPattern" value="%d [%t] %5p (%C:%M:%L) - %m%n"/>
      </layout>
    </appender>

    <root>
      <priority value="INFO"/>
      <appender-ref ref="RollingLogFileAppender"/>
    </root>
  </log4net>
```

以下の通り記述するとエラーレベル毎に出力ファイル名が分けられる。


```xml:Web.config
  <log4net>
    <appender name="DebugAppender" type="log4net.Appender.RollingFileAppender,log4net">
      <param name="File" value="C:\weblogger\log_debug."/>
      <param name="AppendToFile" value="true"/>
      <param name="MaxSizeRollBackups" value="10"/>
      <param name="MaximumFileSize" value="5MB"/>
      <param name="RollingStyle" value="date"/>
      <param name="StaticLogFileName" value="false"/>
      <param name="DatePattern" value="&quot;.&quot;yyyyMMdd&quot;.log&quot;"/>
      <layout type="log4net.Layout.PatternLayout,log4net">
        <param name="ConversionPattern" value="%d [%t] %5p (%C:%M:%L) - %m%n"/>
      </layout>
      <filter type="log4net.Filter.LevelRangeFilter">
        <levelMin value="DEBUG" />
        <levelMax value="DEBUG" />
      </filter>
    </appender>
    <appender name="InfoAppender" type="log4net.Appender.RollingFileAppender,log4net">
      <param name="File" value="C:\weblogger\log_info."/>
      <param name="AppendToFile" value="true"/>
      <param name="MaxSizeRollBackups" value="10"/>
      <param name="MaximumFileSize" value="5MB"/>
      <param name="RollingStyle" value="date"/>
      <param name="StaticLogFileName" value="false"/>
      <param name="DatePattern" value="&quot;.&quot;yyyyMMdd&quot;.log&quot;"/>
      <layout type="log4net.Layout.PatternLayout,log4net">
        <param name="ConversionPattern" value="%d [%t] %5p (%C:%M:%L) - %m%n"/>
      </layout>
      <filter type="log4net.Filter.LevelRangeFilter">
        <levelMin value="INFO" />
        <levelMax value="INFO" />
      </filter>
    </appender>
    <appender name="ErrorAppender" type="log4net.Appender.RollingFileAppender,log4net">
      <param name="File" value="C:\weblogger\log_error."/>
      <param name="AppendToFile" value="true"/>
      <param name="MaxSizeRollBackups" value="10"/>
      <param name="MaximumFileSize" value="5MB"/>
      <param name="RollingStyle" value="date"/>
      <param name="StaticLogFileName" value="false"/>
      <param name="DatePattern" value="&quot;.&quot;yyyyMMdd&quot;.log&quot;"/>
      <layout type="log4net.Layout.PatternLayout,log4net">
        <param name="ConversionPattern" value="%d [%t] %5p (%C:%M:%L) - %m%n"/>
      </layout>
      <filter type="log4net.Filter.LevelRangeFilter">
        <levelMin value="ERROR" />
        <levelMax value="ERROR" />
      </filter>
    </appender>

    <root>
      <level value="DEBUG" />
      <appender-ref ref="DebugAppender" />
      <appender-ref ref="InfoAppender" />
      <appender-ref ref="ErrorAppender" />
    </root>
  </log4net>
```

出力レベルを変更するときはlevel value="DEBUG"の設定値を変更する。