[log4net] ログをファイルに出力する ~日付とサイズでログファイルを分ける~

上記の記事で、ファイルサイズでログを分ける方法と日付でログのバックアップを取る方法について説明しました。
今回は上記2つをミックスしてログを作成する方法について説明します。

Appender は上記2つの記事同様 log4net.Appender.RollingFileAppender を使用します。

App.configの例を以下に示します。

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <configSections>
    <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler,log4net" />
  </configSections>

  <log4net>
    <!-- 日付とサイズでRollingするファイルAppenderの例 -->
    <appender name="DaySizeRollingLogToFile" type="log4net.Appender.RollingFileAppender">
      <!-- ログ・ファイル名 -->
      <File value="C:\Work\MyLog.log" />
      <!-- 追加書き込み -->
      <appendToFile value="true" />
      <!-- 日付ごとにファイルを作成することを指定 -->
      <rollingStyle value="Composite" />
      <!-- ログ・ファイル名を固定にするため“true”を指定 -->
      <staticLogFileName value="true" />
      <!-- ファイルサイズの上限 -->
      <maximumFileSize value="10KB" />
      <!-- 最大バックアップファイル数 -->
      <maxSizeRollBackups value="5" />
      
      <!-- ファイル名の日付部分 -->
      <datePattern value='"."yyyyMMdd".log"' />

      <layout type="log4net.Layout.PatternLayout">
        <!-- ログの書式 -->
        <conversionPattern value="%d[%t] %p - %m%n"/>
      </layout>
    </appender>

    
    <root>
      <!-- すべてのログを出力したい場合 -->
      
      <level value="All" />
      <!-- どのログ出力先を使用するか -->
      <appender-ref ref="DaySizeRollingLogToFile" />
    </root>
  </log4net>
</configuration>

今回のキモは、<rollingStyle>タグのvalueタグに Composite を指定しているところです(15行目)。
これにより、ログファイルは指定したファイルサイズを超えるとバックアップを取って新しくログファイルを作成します。
また、日付が変わってログが出力されるときも新しくログファイルが作成されるようになります。

<rollingStyle>以外のタグについては、冒頭で示した2つの記事で解説済みですので参考にしてください。

今回の設定によるログファイルの作成例を以下に示します。

実行例

“[log4net] ログをファイルに出力する ~日付とサイズでログファイルを分ける~” への1件の返信

  1. もし要件は:
    同じ日付の3つのファイルを結合する
    ファイル結合は時刻順にマージする
    どうやってやりますか?

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください