【ASP.NET MVC5】log4net の導入手順メモ♪ | oki2a24 で log4net を MVC5 プロジェクトに導入する方法を確かめました。
今回は、log4net の設定について、ログレベルごとに違うファイルにログを出力する方法、動的なログファイル命名、ログファイルのサイズ指定を残します。
ログレベルで出力ファイルを変える Config の中身
log4net タグの中身のみ、記述いたします。
- appendToFile : true でログをファイルに追記する。
 - rollingStyle : ローリングの基準。Size または Date を指定する。
 - levelMin : filter タグの中で使用。出力できる最小ログレベルを設定
 - levelMax : filter タグの中で使用。出力できる最大ログレベルを設定
 - conversionPattern : conversionPattern タグの log4net.Layout.PatternLayout タイプを親にして使う。ログ出力時のフォーマットを定義する。
参考 → Log4net(12) ConversionPatternの詳細 – shima111の日記- %date : 年-月-日 時:分:秒,ミリ秒
 - %thread : スレッド番号
 - %-5level : ログレベル
 - %logger : ロガー名
 - %property{NDC} : マルチスレッド時に役立つ、らしい。
 - %message : ログメッセージ
 - %newline : 改行
 - %file : ロガー発生ファイル名
 - %line : ロガー発生行
 
 
<!-- 通常ログ -->
<appender name="InfoLogDailyAppender" type="log4net.Appender.RollingFileAppender">
  <file value="App_Data/log4net/access.log" />
  <appendToFile value="true" />
  <rollingStyle value="Date" />
  <filter type="log4net.Filter.LevelRangeFilter">
    <levelMin value="Debug" />
    <levelMax value="Warn" />
  </filter>
  <layout type="log4net.Layout.PatternLayout">
    <conversionPattern value="%date [%thread] %-5level %logger [%property{NDC}] - %message%newline" />
  </layout>
</appender>
<!-- エラーログ -->
<appender name="ErrorLogDailyAppender" type="log4net.Appender.RollingFileAppender">
  <file value="App_Data/log4net/error.log" />
  <appendToFile value="true" />
  <rollingStyle value="date" />
  <filter type="log4net.Filter.LevelRangeFilter">
    <levelMin value="Error" />
    <levelMax value="Fatal" />
  </filter>
  <layout type="log4net.Layout.PatternLayout">
    <conversionPattern value="%date [%thread] %-5level %logger [%property{NDC}] - %message%newline" />
  </layout>
</appender>
<root>
  <!-- 使用する Appender -->
  <appender-ref ref="InfoLogDailyAppender" />
  <appender-ref ref="ErrorLogDailyAppender" />
</root>
動的なログファイル名の付け方
- file : ファイルパスとファイル名の先頭
 - datePattern : ファイル名のパターンと、1日の範囲でのローリングの期間調整。たとえば yyyyMMdd-HHmm とすると毎分ファイルをローリングする。
 - rollingStyle : ローリングの基準。Size または Date を指定する。
 - staticLogFileName : true ならログファイル名は固定される。
<file value="App_Data/log4net/Info_" /> <datePattern value='yyyyMMdd".log"' /> <rollingStyle value="date" /> <staticLogFileName value="false" />
 
この例の場合、Info_20151021.log といったログファイルが生成され、記録されていきます。1日経つと、新たに Info_20151022.log ファイルに記録されていきますの。
file タグの Info_ と、datePattern の yyyyMMdd”.log” が合わさってファイル名が作られている点に注目です。さらに datePattern ではフォーマとではない固定文字列部分はダブルクォーテーション「”」で囲み、全体はシングルクォーテーション「’」で囲んでいます。
さらに、staticLogFileName を true にすることで、ファイル名の変更許可がなされ、Info_20151021.log という動的なログファイルを作れるようになっています。
ログファイルのサイズ指定
- maxSizeRollBackups : ログファイル数
 - maximumFileSize : 1ファイルあたりの最大サイズ
 
<maxSizeRollBackups value="10" /> <maximumFileSize value="10MB" />
おわりに
こちらのページを見て、はじめてログレベルごとにファイルを分割可能であること、ファイル名を動的にできることを知りました。影響を受けて、本投稿を執筆いたしました。ありがとう存じます!
後は本家ページの例を参考にしながら、タグ名の書き方を修正したり、タグの意味を確認したりで勉強をすすめることができました♪
- Apache log4net – Apache log4net: Config Examples
Config Examples ページ。特に RollingFileAppender が参考になります。 - Apache log4net – Apache log4net Manual: Configuration
Configuration ページ 
以上です。

「【ASP.NET MVC5】log4net でログレベルごとにログを出力する設定!、動的なログファイル命名設定!、ログファイルのサイズ指定設定!」への1件の返信
[…] 【ASP.NET MVC5】log4net でログレベルごとにログを出力する設定!、動的なログファイル命名設定!、ログファイルのサイズ指定設定! | oki2a24 […]