「マイクロソフト系技術情報 Wiki」は、「Open棟梁Project」,「OSSコンソーシアム .NET開発基盤部会」によって運営されています。
目次 †
概要 †
Apache log4netについて。
詳細 †
コンポーネント †
の設定を定義ファイルに定義できる。
レイアウト(Layout) †
アペンダが出力するログのフォーマットを定義する。
アペンダ(Appender) †
- 具体的な出力処理を行う。
- 出力先毎にアペンダの種類が存在する。
- アペンダの種類毎に設定可能な項目が異なる。
- 出力先、ローリング設定等を定義する。
ロガー(Logger) †
- 論理的なログファイル名
- アペンダをロガーで束ねると複数の出力先へ出力できる。
- ログレベル毎にFilterすることができる。
- ルートロガーとロガーがあり階層構造をとる。
アペンダ種類 †
アペンダには以下のような種類がある。
- 名前空間は、log4net.Appender
- ベースクラスは、.AppenderSkeleton?
ファイル †
- .FileAppender?
テキストファイル
- .RollingFileAppender?
ローリング・テキストファイル
コンソール †
- .ConsoleAppender?
- .ColoredConsoleAppender?
- .AnsiColorTerminalAppender?
イベントログ †
DBMS †
- .AdoNetAppender?
- .AdoNetAppenderParameter?
ネットワーク †
- .UdpAppender?
- .NetSendAppender?
- .TelnetAppender?
- .SmtpAppender?
- .SmtpPickupDirAppender?
- .RemotingAppender?
TraceListener? †
- .DebugAppender?
System.Diagnostics.Debug system
- .TraceAppender?
System.Diagnostics.Trace system
- .AspNetTraceAppender?
ASP.NET TraceContext?
Syslog(LinuxおよびUNIX) †
- .LocalSyslogAppender?
- .RemoteSyslogAppender?
その他 †
- .TextWriterAppender?
.TextWriter?クラス
- .OutputDebugStringAppender?
OutputDebugString? Win32API
- .AppenderCollection?
- .ForwardingAppender?
- .BufferingForwardingAppender?
その他 †
ログ ヘッダ †
定義ファイルでレイアウトを定義することにより、
アペンダ毎、ログ ヘッダを設定できる。
(例)
↓時間 ↓レベル ↓スレッドID ↓メッセージ
[2007/10/25 15:22:21,750], [DEBUG], [9], 任意のメッセージ
ログ レベル †
定義ファイルでロガー(Logger)を定義することにより、
出力するログ レベルのフィルタを設定できる。
ログ レベルには次の5つのレベルがあり、
ロガー(Logger)のログ出力APIを使い分ける。
レベル | 説明 |
Fatal | システム停止するような致命的な障害 |
Error | システム停止はしないが、問題となる障害 |
Warn | 障害ではない注意警告 |
Info | 操作ログなどの情報 |
Debug | 開発用のデバッグメッセージ |
ログの設定 †
ローリング †
- 既定(日付でローリング、バックアップ数管理無し)
<!-- ローリング・ログファイル出力用アペンダ -->
<appender name="ACCESS" type="log4net.Appender.RollingFileAppender">
<param name="File" value="C:\root\files\resource\Log\ACCESS" />
<!-- ローリングの設定 -->
<param name="StaticLogFileName" value="false" />
<param name="RollingStyle" value="date " />
<param name="DatePattern" value='"."yyyy-MM-dd".log"' />
<!-- 書き込み時の設定(追加 or 上書き、出力エンコーディング) -->
<param name="AppendToFile" value="true" />
<encoding value="utf-8" />
<!-- メッセージのフォーマット -->
<layout type="log4net.Layout.PatternLayout">
<param name="ConversionPattern" value="[%date{yyyy/MM/dd HH:mm:ss,fff}],[%-5level],[%thread],%message%newline" />
</layout>
<!-- フィルタ(範囲)の設定 -->
<filter type="log4net.Filter.LevelRangeFilter">
<levelMin value="DEBUG" />
<levelMax value="FATAL" />
</filter>
</appender>
- 付与される番号の順番は、CountDirection?パラメタ値により制御する。
- サイズ10MB(MaximumFileSize?)毎にローリングし、
下記のように、2つ(MaxSizeRollBackups?)のバックアップを保持する 。
- (ログファイル名) → 現在出力中のログ
- (ログファイル名).1 → 過去のログバックアップ(古い)
- (ログファイル名).2 → 過去のログバックアップ(最も古い)
- MaxSizeRollBackups?パラメタ値は、サイズによるローリングにのみ適用される。
- 日付とサイズを合わせたローリング(composite)では、ログファイル数を一定数に保つ役割を果たさない。
参考 †
- オープンソースのロギング・サービス「log4net」を使う:
連載:VBで実践! 外部コンポーネント活用術 - @IT
Tags: :プログラミング, :.NET開発