C#.NET で Log4Net を利用してログを記録する設定のメモ。
方針
-
ログを %Appdata%\[会社名]\[製品名]\log\ の下に保存したい
[会社名]=Rohinomiya
[製品名]=SampleLog4Net -
ログを以下のように3つに分けたい
- インフォログ(1つのファイルに出力/INFO~WARNレベルのログを保存)
- エラーログ(日付別にファイルを作成/ERROR~FATALのログを保存)
- トレースログ(日付別にファイルを作成/TRACE~FATALのログを保存)
参考:ログレベル
- Fatal システム停止するような致命的な障害
- Error システム停止はしないが、問題となる障害
- Warn 障害ではない注意警告
- Info 操作ログなどの情報
- Debug 開発用のデバッグメッセージ
- trace 詳細なデバッグの出力
設定手順
- Log4Net公式サイトからLog4Net.dllをダウンロードし、C#プロジェクトの参照設定に追加
- AssemblyInfo.cs に追記: Log4Netの設定ファイルを読み込む
- Log4Netの設定ファイルを記述する(Log4net.Config.xml) 出力フォルダにコピーする=TRUE
- Program.cs にて、Loggerオブジェクトを生成すれば、あとはログを吐くだけ
AssemblyInfo.cs に追記
// read Log4Net Configuration file
[assembly: log4net.Config.XmlConfigurator(ConfigFile=@"Log4net.Config.xml", Watch=true)]
Log4net.Config.xml
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<log4net>
<!-- 通常ログ:単一ファイル出力 -->
<appender name="InfoLogDailyAppender" type="log4net.Appender.FileAppender">
<File value="${APPDATA}\\Rohinomiya\\SampleLog4Net\\Logs\\Info.log" />
<AppendToFile value="true" />
<filter type="log4net.Filter.LevelRangeFilter">
<param name="LevelMax" value="WARN" />
<param name="LevelMin" value="INFO" />
</filter>
<layout type="log4net.Layout.PatternLayout">
<ConversionPattern value="%date [%thread] [%-5level] %logger - %message%n" />
</layout>
</appender>
<!-- エラーログ:分割ファイル出力 -->
<appender name="ErrorLogDailyAppender" type="log4net.Appender.RollingFileAppender">
<!-- ファイル名は日付ごと -->
<param name="File" value="${APPDATA}\\Rohinomiya\\SampleLog4Net\\Logs\\Error_" />
<pa