「Open棟梁 wiki」は、「Open棟梁Project」,「OSSコンソーシアム .NET開発基盤部会」によって運営されています。
目次 †
概要 †
ログ出力方式について纏める。
lon4net †
Open棟梁では内部でlon4netを使用しているので、
ココの記述は ≒ lon4netの仕様を説明となっている。
lon4netでは、3つの主要なコンポーネント
の設定を定義ファイルに定義できる。
アペンダ・ロガーについては、以下が参考になる。
レイアウト(Layout) †
アペンダが出力するログのフォーマットを定義する。
アペンダ(Appender) †
- 具体的な出力処理を行う。
- 出力先毎にアペンダの種類が存在する。
- アペンダの種類毎に設定可能な項目が異なる。
- 出力先、ローリング設定等を定義する。
ロガー(Logger) †
- 論理的なログファイル名
- アペンダをロガーで束ねると複数の出力先へ出力できる。
- ログレベル毎にFilterすることができる。
- ルートロガーとロガーがあり階層構造をとる。
設定 †
設定の詳細は、”Open棟梁”の利用ガイド(纏め者編)の1.3節:「log4net」を参照のこと。
出力先 †
アペンダの種類毎に出力先が異なる。
アペンダ種類 †
アペンダには以下のような種類がある。
- 名前空間は、log4net.Appender
- ベースクラスは、.AppenderSkeleton?
ファイル †
- .FileAppender?
テキストファイル
- .RollingFileAppender?
ローリング・テキストファイル
コンソール †
- .ConsoleAppender?
- .ColoredConsoleAppender?
- .AnsiColorTerminalAppender?
イベントログ †
DB †
- .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?
ログ ヘッダ †
定義ファイルでレイアウト(Layout)を定義することにより、
アペンダ(Appender)毎、ログ ヘッダを設定できる。
(例)
↓時間 ↓レベル ↓スレッドID ↓メッセージ
[2007/10/25 15:22:21,750], [DEBUG], [9], 任意のメッセージ
ログ レベル †
定義ファイルでロガー(Logger)を定義することにより、
出力するログ レベルのフィルタを設定できる。
ログ レベルには次の5つのレベルがあり、
ロガー(Logger)のログ出力APIを使い分ける。
レベル | 説明 |
Fatal | システム停止するような致命的な障害 |
Error | システム停止はしないが、問題となる障害 |
Warn | 障害ではない注意警告 |
Info | 操作ログなどの情報 |
Debug | 開発用のデバッグメッセージ |
ログの種類 †
ログの種類毎に主要コンポーネント(ロガー、アペンダ、レイアウト)を準備
アクセス トレース ログ †
デバッグや、パフォーマンス・アクセス分析で重宝する。
- アプリケーションへのアクセス状況と処理状況(処理内容、処理時間)をフレームワークに埋め込んだトレースからログ ファイルに出力する。
- アクセス トレース ログの実装は、”Open棟梁”の各レイヤの「ベースクラス2」(画面コード親クラス2、業務コード親クラス2)上に共通処理として実装できる。
- 例外発生時のExceptionの情報もコチラに出力する。
- 正常時のログ出力情報は、性能の観点から、最小限とする。
- 異常時のログ出力情報は、エラー・障害原因の究明のため
詳細に出力する(エラー メッセージ、スタックトレースなど)。
フォーマット †
下記は、アクセス トレース ログ出力のテンプレート・フォーマット。
- カスタム ヘッダ
- (認証)ユーザ名
- IPアドレス(端末の識別が可能な情報)
- メッセージ
- レイヤ、開始・終了
- [Init] or [Postback] : P層の画面のイベント処理
- "----->" : P層 のコントロール イベント処理の開始
- "<-----" : P層 のコントロール イベント処理の終了
- "----->>" : B層 業務処理の開始
- "<<-----" : B層 業務処理の終了
- 例外情報
- ErrorMessageID
- ErrorMessage?
- StackTrace?
- ToString?した方がイイかも。
SQLトレース ログ †
SQLに絞ってになるが、アクセス トレース ログと同様に、
デバッグや、パフォーマンス・アクセス分析で重宝する。
フォーマット †
下記は、SQLトレース ログ出力のテンプレート・フォーマット。
- カスタム ヘッダ
- (認証)ユーザ名
- 実行時間(ミリ秒)
- CPU時間(ミリ秒)
- メッセージ
- CommandText?(実行時のSQL文)
- CommandParameter?(実行時のパラメタ一覧)
- 例外情報
- StackTrace?
- ToString?した方がイイかも。
オペレーション トレース ログ †
業務のイベントをログ出力する。