[log4net] log4netの設定

log4netを使用してログを出力するには、設定を作成する必要があります。

設定は、プロジェクトファイルのApp.config に組み込むか、任意のXMLファイルを準備するかのどちらかとなります。


設定値の保存場所を設定する

log4netは最初にAssemblyInfovb(C#の場合はAssemblyInfo.cs)を参照し、ログ出力に必要な設定値が保存されている場所を読み取ります。
設定値の保存場所は、App.configまたは任意のXMLファイルを指定することが可能です。
AssemblyInfo.vb(C#はAssemblyInfo.cs)の最終行に以下のコードを追加します。

VB.NETのAssemblyInfo.vbへの追記(App.configを使用する場合)

<Assembly: log4net.Config.XmlConfigurator(Watch:=True)>

VB.NETのAssemblyInfo.vbへの追記(任意のXMLファイルを使用する場合)

<Assembly: log4net.Config.XmlConfigurator(Watch:=True, ConfigFile:="XMLファイルのパス")>

C#のAssemblyInfo.csへの追記(App.configを使用する場合)

[assembly: log4net.Config.XmlConfigurator(Watch=true)]

C#のAssemblyInfo.csへの追記(任意のXMLファイルを使用する場合)

[assembly: log4net.Config.XmlConfigurator(Watch=true, ConfigFile="XMLファイルのパス")]

 


設定を作成する
設定ファイルには、ログをどのように出力するかを記述します。

最初に、App.configにある~を以下のように編集し、log4netの設定を セクションに書くことを宣言しておきます。

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

次に、ログの出力形態(どこに出力するか)を記述します。
ログの出力形態は、下表のように複数の種類があり、アペンダと呼ばれるログ出力用クラスを指定して設定します。
(代表的なもののみを掲載しています。詳しくは、http://logging.apache.org/log4net/release/config-examples.html を参照ください)

アペンダ 出力形態
log4net.Appender.AdoNetAppender データベース(ADO.NETを使用)
log4net.Appender.ConsoleAppender コンソール
log4net.Appender.ColoredConsoleAppender コンソール(エラーレベルごとに色を指定できる)
log4net.Appender.EventLogAppender イベント・ログ
log4net.Appender.FileAppender ファイル
log4net.Appender.NetSendAppender NetSendコマンドで、Windowsユーザーへ送付
log4net.Appender.RollingFileAppender ファイル(ファイルの最大値で、ログファイルを分割出力)
log4net.Appender.SmtpAppender メール
log4net.Appender.TraceAppender トレース情報として生成

アペンダは、App.configのセクション内のセクションに記述します(複数記述することも可能です)。

コンソールにログを出力する例でみてみましょう。
のname属性には任意の名前を記述します。
type属性には上記表のログ出力クラス(ここではlog4net.Config.Log4NetConfigurationSectionHandler,log4net)を指定します。
はログの出力書式を設定するセクションです。
のvalue属性に、ログの出力書式を記述します。

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

  <log4net>
    <!-- コンソールにログを出力する設定の例 -->
    <appender name="LogToConsole" type="log4net.Appender.ConsoleAppender">
      <layout type="log4net.Layout.PatternLayout">
        <conversionPattern value="%d[%t] %p - %m%n"/>
      </layout>
    </appender>
  </log4net>
</configuration>

 


ログの出力書式
のvalue属性で指定できる代表的な値には以下のようなものがあります。
(そのほかの値については http://logging.apache.org/log4net/release/sdk/log4net.Layout.PatternLayout.html を参照ください)

説明
%d ログ日時の出力
%L 行番号の出力
%m メッセージを出力
%n 改行文字の出力
%p ログレベルの出力
%t ログを生成したスレッドの出力
%M ログを出力したメソッド名
%logger ログクラスのGetLoggerメソッドの引数に渡した値

 


ログレベルの設定
出力するログは、ログレベルを設定することができます。
ログレベルには、下表のものがあります。

レベル 説明
Fatal システムを停止するような致命的なエラー
Error システム停止までいかないが、問題となるエラー
Warn 注意や警告
Info 操作ログ情報
Debug 開発用デバッグ情報

ログレベルを設定すると、指定したログレベルより上のものが出力されます。
たとえば、ログレベルに Warnを指定した場合には、表のWarn以上のログのみ(Warn, Error, Fatalの3種類)出力します。
また、レベルには All と OFFというものもあり、 Allを指定した場合には、すべてのレベルのログを出力します。Offを指定した場合には一切ログを出力しません。

ログレベルは セクションのセクション内に記述します。

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

  <log4net>
    <!-- コンソールにログを出力する設定の例 -->
    <appender name="LogToConsole" type="log4net.Appender.ConsoleAppender">
        :省略
    </appender>
    
    <root>
      <!-- 警告以上のログを出力したい場合 -->
      <level value="Warn" />
    </root>
  </log4net>
</configuration>

 


使用するアペンダーの設定
最後に、どのアペンダを使用するかを指定する必要があります。
使用するアペンダは、先ほどのセクション内に記述します。
ref属性には、アペンダに付けた名前を指定します。

<root>
  <!-- 警告以上のログを出力したい場合 -->
  <level value="Warn" />
  <!-- 使用するアペンダを設定 -->
  <appender-ref ref="LogToConsole" />
</root>

上記をまとめた App.configの例を以下に記します。

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

  <log4net>
    <!-- コンソールを使用するAppenderの例 -->
    <appender name="LogToConsole" type="log4net.Appender.ConsoleAppender">
      <layout type="log4net.Layout.PatternLayout">
        <conversionPattern value="%d[%t] %p - %m%n"/>
      </layout>
    </appender>

    <root>
      <!-- 警告以上のログを出力したい場合 -->
      <level value="Warn" />
      <!-- どのログ出力先を使用するか -->
      <appender-ref ref="LogToConsole" />
    </root>
  </log4net>
</configuration>

コメントを残す

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