べるべる研究日誌

なんでもやる系エンジニアの日々

log4net

とりあえず最近よく使うので俺様標準設定のメモ

AssemblyInfo.vb

<Assembly: log4net.Config.XmlConfigurator(Watch:=True,ConfigFile:="log4net.config")>

log4net.config

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

  <appSettings>
    <!-- log4net 内部のデバッグメッセージを出力 -->
    <add key="log4net.Internal.Debug" value="true" />
  </appSettings>

  <log4net>
    <!-- コンソール出力用 (VS 上 [出力] ウインドウへの出力) -->
    <appender name="ConsoleAppender" type="log4net.Appender.ConsoleAppender">
      <!-- 出力文字列のフォーマット -->
      <layout type="log4net.Layout.PatternLayout">
        <param name="ConversionPattern" value="@%-5level >> %message%newline" />
      </layout>
    </appender>

    <!-- ファイル出力用 -->
    <appender name="DailyFileAppender"
      type="log4net.Appender.RollingFileAppender">
      <!-- ログファイルの切替 { サイズ: Size, 日付: Date } -->
      <param name="RollingStyle" value="Date" />
      <!-- ファイル名 -->
      <param name="File" value="log/" />
      <!-- ファイル名に付加する日付パターン -->
      <param name="DatePattern" value='yyMMdd".log"' />
      <!-- ファイル名の固定 -->
      <param name="StaticLogFileName" value="false" />
      <!-- ファイル書き込み { 追記: true, 上書き: false } -->
      <param name="AppendToFile" value="true" />
      <!-- 最大保存ファイル数 (古い順に削除) -->
      <param name="MaxSizeRollBackups" value="10" />
      <!-- 出力文字列のフォーマット -->
      <layout type="log4net.Layout.PatternLayout">
        <param name="ConversionPattern"
             value="%d %-5p - %m%n" />
      </layout>
      <!-- 出力するログ レベルのフィルタ -->
      <filter type="log4net.Filter.LevelRangeFilter">
        <levelMin value="INFO" />
        <levelMax value="FATAL" />
      </filter>
    </appender>

    <!-- イベント ログ出力用 -->
    <appender name="EventLogAppender" type="log4net.Appender.EventLogAppender">
      <!-- イベント ログ上のアプリケーション名 -->
      <applicationName value="AppName" />
      <!-- 出力文字列のフォーマット -->
      <layout type="log4net.Layout.PatternLayout">
        <conversionPattern value="%-5level %date{yyyy/MM/dd_HH:mm:ss,fff} [%thread] %logger [%property{NDC}] - %message%newline" />
      </layout>
      <!-- 出力するログ レベルのフィルタ -->
      <filter type="log4net.Filter.LevelRangeFilter">
        <levelMin value="ERROR" />
        <levelMax value="FATAL" />
      </filter>
    </appender>

    <!-- デフォルトの出力設定 -->
    <root>
      <level value="ALL" />
      <appender-ref ref="ConsoleAppender" />
      <appender-ref ref="DailyFileAppender" />
      <appender-ref ref="EventLogAppender" />
    </root>
  </log4net>
</configuration>

後はFormに以下を追加すればOK

Imports log4net
....
    Private Shared ReadOnly log As log4net.ILog = _   log4net.LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType)