カテゴリー
Microsoft

【ASP.NET MVC5】log4net でログレベルごとにログを出力する設定!、動的なログファイル命名設定!、ログファイルのサイズ指定設定!

【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" />

おわりに

こちらのページを見て、はじめてログレベルごとにファイルを分割可能であること、ファイル名を動的にできることを知りました。影響を受けて、本投稿を執筆いたしました。ありがとう存じます!

後は本家ページの例を参考にしながら、タグ名の書き方を修正したり、タグの意味を確認したりで勉強をすすめることができました♪

以上です。

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

コメントを残す