log4net の 使い方

0 件のコメント

少し今更なのですが…忘れてしまっていて調べなおしを行ったのでメモしておきます。

log4net の 基本的な利用方法を手順に従ってまとめてみました。 とりあえず利用するには以下の手順に従ってコピペしていけば利用できるはずです。

概要

  1. log4net を プロジェクト に組み込
  2. AssemblyInfo.cs へ追記
  3. log4net.config の作成
  4. ログ出力の実装

1. log4net を プロジェクト に組み込み

以前はアセンブリをダウンロードしてきて参照設定して…とありましたが、 現在は NuGet から取得可能です。

  1. プロジェクトを右クリック、「NuGetパッケージの管理」を選択

  2. 検索窓に「log4net」を入力

  3. 検索結果の log4net の「インストール」を選択

  4. ソリューションエクスプローラーで参照設定に「log4net」があることを確認

2. AssemblyInfo.cs へ追記

log4net の設定ファイルがどこにあるかを記載します。 ここでは log4net.config というファイル名にしてあります。 また、 Watch を指定することで、設定ファイルに変更があった場合に動的に読み込みを行ってくれるようになります。

AssemblyInfo.cs

// log4net configuration file
[assembly: log4net.Config.XmlConfigurator(ConfigFile=@"log4net.config", Watch=true)]

3. log4net.config の作成

プロジェクトルートに log4net.config ファイルを追加します。 追加した log4net.config はリリース時にコピーされる必要があるので、「出力ディレクトリにコピー」を「常にコピー」に設定しておきます。

以下では追加した log4net.config に log4net の設定を定義します。 サンプルなので一定サイズごとにファイル分割を行うログ出力を行える設定にしてあります。

log4net.config

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

    <appender name="RollingLogFileAppender" type="log4net.Appender.RollingFileAppender">
      <file value="application.log" />
      <appendToFile value="true" />
      <rollingStyle value="Size" />
      <maxSizeRollBackups value="10" />
      <maximumFileSize value="1MB" />
      <layout type="log4net.Layout.PatternLayout">
        <conversionPattern value="%d{yyyy-MM-ddTHH:mm:ss} [%-5level] - %message%newline" />
      </layout>
    </appender>

    <root>
      <level value="ERROR" />
      <appender-ref ref="RollingLogFileAppender" />
    </root>

  </log4net>
</configuration>

4. ログ出力の実装

ログ出力は LogManager.GetLogger()ILog を取得して利用します。

    public static void Main(params string args)
    {
        // ロガーの取得
        // (補足)log4net.config の appender@name に
        //       引数で渡した名前の appender は存在しないので root が取得される
        var logger = LogManager.GetLogger(Assembly.GetExecutingAssembly().FullName);

        // ログ出力
        logger.Debug("デバッグ:処理の中間情報");
        logger.Info("情報:操作履歴");
        logger.Warn("注意:現在は正常に動作が続けられるがデータ不整合の可能性がある操作。");
        logger.Error("エラー:復旧可能な障害。継続できるが処理はロールバックされる。");
        logger.Fatal("障害:アプリケーションが強制終了する障害");
    }

簡単にですが…メモ程度に log4net の使い方をまとめておきました。 これでまた調べることは無くなるはず!