keijikk
1/20/2016 - 1:12 AM

log4netのConfigファイル

log4netのConfigファイル

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

<configuration>
  <configSections>
    <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net" />
  </configSections>

  <log4net>
    <root>
      <!-- ERROR以上のログを記録 -->
      <!--<level value="ERROR" />-->
      <level value="All" />
      <!-- 使用する Appender -->
      <appender-ref ref="InfoLogDailyAppender" />
      <appender-ref ref="ErrorLogDailyAppender" />
      <appender-ref ref="DebugLogDailyAppender" />
    </root>

    <!-- Infoログ:分割ファイル出力 -->
    <appender name="InfoLogDailyAppender" type="log4net.Appender.RollingFileAppender">
      <!--<param name="File" value="${SystemDrive}\\inetpub\\logs\\LogFiles\\WCFService\\Info_" />-->
      <!--<param name="File" value="${APPDATA}\\Rohinomiya\\SampleLog4Net\\Logs\\Info_" />-->
      <param name="File" value="./logs/Info_" />
      <param name="DatePattern" value='yyyy-MM"/Info_"yyyyMMdd".log"' />
      <param name="RollingStyle" value="date" />
      <param name="StaticLogFileName" value="false" />

      <AppendToFile value="true" />

      <filter type="log4net.Filter.LevelRangeFilter">
        <param name="LevelMax" value="WARN" />
        <param name="LevelMin" value="INFO" />
      </filter>

      <param name="MaximumFileSize" value="10MB" />
      <param name="MaxSizeRollBackups" value="10" />

      <layout type="log4net.Layout.PatternLayout">
        <ConversionPattern
          value="%date{yyyy/MM/dd HH:mm:ss.fff},[%thread],[%-5level],%logger,%class,%method,%message%n" />
      </layout>
    </appender>

    <!-- エラーログ:分割ファイル出力 -->
    <appender name="ErrorLogDailyAppender" type="log4net.Appender.RollingFileAppender">
      <!-- ファイル名は日付ごと -->
      <param name="File" value="./logs/Error_" />
      <param name="DatePattern" value='yyyy-MM"/Error_"yyyyMMdd".log"' />
      <param name="RollingStyle" value="date" />
      <param name="StaticLogFileName" value="false" />

      <param name="AppendToFile" value="true" />

      <filter type="log4net.Filter.LevelRangeFilter">
        <param name="LevelMax" value="FATAL" />
        <param name="LevelMin" value="ERROR" />
      </filter>

      <param name="MaximumFileSize" value="10MB" />
      <param name="MaxSizeRollBackups" value="10" />

      <layout type="log4net.Layout.PatternLayout">
        <ConversionPattern
          value="%date{yyyy/MM/dd HH:mm:ss.fff},[%thread],[%-5level],%logger,%file(%line),%class,%method,%message%n" />
      </layout>
    </appender>

    <!-- デバッグ用:分割ファイル出力 -->
    <appender name="DebugLogDailyAppender" type="log4net.Appender.RollingFileAppender">

      <!-- ファイル名は日付ごと -->
      <param name="File" value="./logs/Trace_" />
      <param name="DatePattern" value='yyyy-MM"/Trace"yyyyMMdd".log"' />
      <param name="RollingStyle" value="date" />
      <param name="StaticLogFileName" value="false" />

      <param name="AppendToFile" value="true" />

      <filter type="log4net.Filter.LevelRangeFilter">
        <!-- <param name="LevelMax" value="FATAL" /> -->
        <param name="LevelMin" value="TRACE" />
      </filter>

      <param name="MaximumFileSize" value="10MB" />
      <param name="MaxSizeRollBackups" value="10" />

      <layout type="log4net.Layout.PatternLayout">
        <ConversionPattern
          value="%date{yyyy/MM/dd HH:mm:ss.fff},[%thread],[%-5level],%logger,%file(%line),%class,%method,%message%n" />
      </layout>
    </appender>
  </log4net>
</configuration>
  • ファイルは日ごとに生成
  • Error, Info, Traceごとに、月別のフォルダ分ける
  • Infoはファイルの行数は入れていない
  • 出力形式はcsv(カンマ区切り)にしている
public static void Main(string[] args)
{
    ILog logger = LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);

    logger.Debug("開発中のデバッグ/トレースに使用する");
    logger.Info("情報(操作履歴等)");
    logger.Warn("注意/警告(障害の一歩手前)");
    logger.Error("システムが停止するまではいかない障害が発生");
    logger.Fatal("システムが停止する致命的な障害が発生");
}
// read Log4Net Configuration file
[assembly: XmlConfigurator( ConfigFile = @"Log4net.Config.xml", Watch = true )]