addタグにより個別の接続に対する設定を記述する。
name | 設定要素名。重複は許されない。"default"の名前を持つ設定要素が必ず1つ必要。 |
writerClass | 実際に使用するCFW.Log.LogWriterの実装クラス名を記述する。 |
parameter | LogWriterの初期化に必要なパラメータを指定。セミコロン";"区切りで複数指定可能 |
logLevel | ログ出力レベル、ALLの場合全てのログを出力。設定レベルより小さいレベルのログ出力は捨てられる。 現在の設定値(仕様変更対応中、フラグの組み合わせになる予定)
|
<log>
<-- DefaultLogWriterを使う -->
<add name="default"
writerClass="CFW.Log.DefaultLogWriter,CFW"
parameter="default"
logLevel="ALL"/>
<-- UserLogWriterを使う。baseDirに出力先ディレクトリ、baseNameにログファイルの基本名を指定 -->
<add name="userLog"
writerClass="CFW.Log.UserLogWriter,CFW"
parameter="baseDir=c:\temp\log;baseName=test"
logLevel="ALL"/>
<-- webservice専用にLogServiceReferenceを使用する場合 urlにLogService.asmxの場所を指定する。
ここではERROR,FATALのみ出力 -->
<add name="logService"
writerClass="CFW.Log.LogServiceReference.LogServiceReference,CFW.Log.LogServiceReference"
parameter="url=http://localhost:4503/LogService/LogService.asmx"
logLevel="ERROR"/>
</log>
CFW.Log.LogFactoryを使用してCFW.Log.Loggerオブジェクトを取得。
指定するのは設定要素名称、クラス名。
///
/// ログ出力の準備 定義しているクラス名を基にする。
///
protected static CFW.Log.Logger log = CFW.Log.LoggerFactory.GetLogger(
"default",
System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name
);
Loggerクラスの出力メソッドを使用して出力。
出力レベルはメソッドを使い分ける。(Info,Debug,Warn,Error,Fatal)
現在実行中のメソッド名を必ず指定する。
//情報
logger.Info(System.Reflection.MethodBase.GetCurrentMethod().Name, "test");
//警告
logger.Warn(System.Reflection.MethodBase.GetCurrentMethod().Name, "test");
//エラー
logger.Error(System.Reflection.MethodBase.GetCurrentMethod().Name, "test");
//デバッグ
logger.Debug(System.Reflection.MethodBase.GetCurrentMethod().Name, "test");
//致命的なエラー。通常はこの後の処理は行わず、アプリケーションを終了する。
logger.Fatal(System.Reflection.MethodBase.GetCurrentMethod().Name, "test");
実際の出力先は要件による。
現在実装済みのLogWriterは以下のとおり
CFW.Log.DefaultLogWriter | System.Diagnostics.Traceに出力するLogWriter。TraceリスナーにCFW.Log.LogTraceListenerを指定することでタイムスタンプ付きログが採取できる。(Traceの詳細はMSDN等参照) |
CFW.Log.UserLogWriter | ログファイルをユーザーID別に分けるためのLogWriter。CFW.Auth.AuthProviderからログイン済みのユーザーを取得してディレクトリ名の元にする。保存場所はparameterに指定したbaseDir以下の日付(年)\日付(年月)\日付(年月日)\(ユーザーID)\ ログイン処理を通過していない(CFW.Auth.AuthProvider#Authenticateを実行していない)場合は"anonymous"をユーザーIDの代わりにする。 |
CFW.Log.LogServiceReference.LogServiceReference | LogServiceを実行しているサーバーにログを出力する。LogService.asmxがウェブサーバーに必要。parameterにLogServiceを実行しているサーバーのurlを記述する。 |
CFW.Log.LogWriterを継承し必要なメソッドを追加、overrideする。