共通ドキュメント

ログ出力

概要

  • 設定
  • ログ出力オブジェクトの取得
  • ログ出力
  • 新しいログ出力の実装

設定

設定要素

addタグにより個別の接続に対する設定を記述する。

name設定要素名。重複は許されない。"default"の名前を持つ設定要素が必ず1つ必要。
writerClass実際に使用するCFW.Log.LogWriterの実装クラス名を記述する。
parameterLogWriterの初期化に必要なパラメータを指定。セミコロン";"区切りで複数指定可能
logLevelログ出力レベル、ALLの場合全てのログを出力。設定レベルより小さいレベルのログ出力は捨てられる。
現在の設定値(仕様変更対応中、フラグの組み合わせになる予定)
  • NONE
  • FATAL
  • ERROR
  • WARN
  • INFO
  • DEBUG
  • 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

現在実装済みのLogWriterは以下のとおり

CFW.Log.DefaultLogWriterSystem.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.LogServiceReferenceLogServiceを実行しているサーバーにログを出力する。LogService.asmxがウェブサーバーに必要。parameterにLogServiceを実行しているサーバーのurlを記述する。

新しいログ出力の実装

CFW.Log.LogWriterを継承し必要なメソッドを追加、overrideする。