Logging.vbs

logging.vbsは、ロギングフレームワークを提供します。
 
ロギングフレームワークでは、log4jのように、ロガーと、アペンダーの概念が提供されます。
 
ロガー
ロガーはフレームワークの基本的なインスタンスです。
ロガーの役割は、アペンダーや子ロガーといったインスタンスを管理し、アプリケーションからのログ出力要求をコントロールすることです。
ロガーは、出力の要求を受け付けるとそのログレベルがロガーに設定されたログ出力レベル以上であればアペンダーにメッセージをディスパッチします。
 
ログの出力レベルは以下の種類が用意されており、左から右に行くほど高いレベルとして定義されています。
TRACE < DEBUG < INFO < WARN < ERROR < FATAL
 
ロガーは子ロガーを持つことが可能です。
親ロガーに指示されたログ出力命令は、子ロガーに伝播され、子ロガーはそのアペンダーや設定に従って出力を行います。
ロガーの持っているログ出力レベルは子ロガーにも影響を与え、親の制約が子にも伝播されます。
例えば、親ロガーでINFOレベル以上を出力可能としている場合、子ロガーがどのような設定をしていてもDEBUGレベルの出力はできません。
子ロガーは複数持つことが可能です。
メッセージは全ての子ロガーに順番に引き渡されます。
 
アペンダー
アペンダーは、指定されたターゲットにログメッセージの出力を行います。
アペンダーが無ければ、ロガーはメッセージを破棄します。
 
アペンダーには以下の種類が用意されており、それぞれ別々のターゲットにログメッセージを書き込みます。
FileAppender
FileAppenderは、ファイルにメッセージを書き込みます。
対象のファイルは、filenameプロパティに指定します。
 
TextStreamAppender
TextStreamAppenderは、TextStreamオブジェクトにメッセージを書き込みます。
対象のTextStreamは、textstreamプロパティに指定します。
 
NTEventLogAppender
NTEventLogAppenderは、WindowsのEventLogにメッセージを書き込みます。
NTEventLogAppenderでは、ログレベルごとに次のようなイベントタイプで書き込まれます。


最も簡単な使用例
最も簡単な利用形態は、FileAppenderによるロギングです。
以下の例を見てください。ここでは、app.logにINFOレベルのメッセージ"logging test."を書き込んでいます。
 
set logger = log_create_simple( "simple_logger", "app.log", LOG_LEVEL_INFO )
log_info logger, "logging test."
log_close logger

Member Summary

namedescription
log_create( name, threshold ) ロガーを構築します。
log_create_simple( name, filename, threshold ) ファイルにロギングするシンプルなロガーを構築します。
log_get_name( logger ) ロガーの名前を取得します。
log_close( logger ) ロガーやアペンダーが開いている各種リソースをクローズします。
log_get_children( logger ) ロガーが持っている子ロガーのコレクションを取得します。
log_set_child( logger, child ) ロガーに対して、子ロガーを設定します。
log_get_appenders( logger ) ロガーが持っているアペンダーのコレクションを取得します。
log_set_appender( logger, appender ) ロガーにアペンダーを設定します。
log_appender_create( name, appender_type ) アペンダーを構築します。
log_appender_get_name( appender ) アペンダーの名前を取得します。
log_appender_get_type( appender ) アペンダーの種類を取得します。
log_appender_set_property( appender, name, value ) アペンダーのプロパティを設定します。
log_appender_get_property( appender, name ) アペンダーのプロパティに設定されている値を取得します。
log_appender_get_properties( appender ) アペンダーが持っているプロパティを取得します。
log_trace( logger, message ) TRACEレベルのログを出力します。
log_debug( logger, message ) DEBUGレベルのログを出力します。
log_info( logger, message ) INFOレベルのログを出力します。
log_warn( logger, message ) WARNレベルのログを出力します。
log_error( logger, message ) ERRORレベルのログを出力します。
log_fatal( logger, message ) FATALレベルのログを出力します。
log_print( logger, level, message ) 指定されたレベルのログを出力します。

Member Details

Public Function log_create( name, threshold )

ロガーを構築します。
 
構築されたばかりのインスタンスは、アペンダーを持っていません。
そのためログ出力関数はメッセージを破棄します。
アペンダーを作成し紐付けを行ってください。
詳細は、log_appender_createを参照してください。
 
@param name ロガーの名前
@param theshold ログ出力を行う閾値
@return 構築されたロガーオブジェクト

Public Function log_create_simple( name, filename, threshold )

ファイルにロギングするシンプルなロガーを構築します。
 
このインスタンスは、FileAppenderを持っています。
出力方法をカスタマイズする場合には、このアペンダーのプロパティを変更してください。
 
@param name ロガーの名前
@param filename 出力先のファイル名
@param theshold ログ出力を行う閾値
@return 構築されたロガーオブジェクト

Public Function log_get_name( logger )

ロガーの名前を取得します。
 
@param logger ロガーオブジェクト
@return ロガーの名前

Public Sub log_close( logger )

ロガーやアペンダーが開いている各種リソースをクローズします。
 
この関数は、子ロガーにも適用されます。
 
@param logger ロガーオブジェクト

Public Function log_get_children( logger )

ロガーが持っている子ロガーのコレクションを取得します。
 
@param logger ロガーオブジェクト
@return 子となるロガーオブジェクトのコレクション(子ロガーの名前をキー、子ロガーオブジェクトを値としたScripting.Dictionaryオブジェクト)

Public Function log_set_child( logger, child )

ロガーに対して、子ロガーを設定します。
 
@param logger 親となるロガー
@param name 子となるロガーに付与する名前
@param child 子となるロガー
@return 同名で既に設定されていた子ロガー

Public Function log_get_appenders( logger )

ロガーが持っているアペンダーのコレクションを取得します。
 
@param logger アペンダーを所持しているロガー
@return アペンダーのコレクション(Scripting.Dictionary)

Public Function log_set_appender( logger, appender )

ロガーにアペンダーを設定します。
 
@param logger アペンダーを所持しているロガー
@return 同名で既に設定されていたアペンダー

Public Function log_appender_create( name, appender_type )

アペンダーを構築します。
 
アペンダーの種類には次のいずれかが指定できます。


 
@param name アペンダーの名前
@param appender_type アペンダーの種類
@return 構築されたアペンダー

Public Function log_appender_get_name( appender )

アペンダーの名前を取得します。
 
@param appender アペンダー
@return アペンダーの名前

Public Function log_appender_get_type( appender )

アペンダーの種類を取得します。
 
@param appender アペンダー
@return アペンダーの種類

Public Function log_appender_set_property( appender, name, value )

アペンダーのプロパティを設定します。
 
@param appender 対象のアペンダー
@param name プロパティの名称
@param value 設定値
@return 設定されている値

Public Function log_appender_get_property( appender, name )

アペンダーのプロパティに設定されている値を取得します。
 
@param appender 対象のアペンダー
@param name プロパティの名称
@return 設定されている値

Public Function log_appender_get_properties( appender )

アペンダーが持っているプロパティを取得します。
 
@param appender 対象のアペンダー
@return プロパティの名前をキー、プロパティ値をとして持ったDictionaryオブジェクト

Public Sub log_trace( logger, message )

TRACEレベルのログを出力します。
 
@param logger ロギングインスタンス
@param message 出力メッセージ

Public Sub log_debug( logger, message )

DEBUGレベルのログを出力します。
 
@param logger ロギングインスタンス
@param message 出力メッセージ

Public Sub log_info( logger, message )

INFOレベルのログを出力します。
 
@param logger ロギングインスタンス
@param message 出力メッセージ

Public Sub log_warn( logger, message )

WARNレベルのログを出力します。
 
@param logger ロギングインスタンス
@param message 出力メッセージ

Public Sub log_error( logger, message )

ERRORレベルのログを出力します。
 
@param logger ロギングインスタンス
@param message 出力メッセージ

Public Sub log_fatal( logger, message )

FATALレベルのログを出力します。
 
@param logger ロギングインスタンス
@param message 出力メッセージ

Public Sub log_print( logger, level, message )

指定されたレベルのログを出力します。
 
@param logger ロギングインスタンス
@param level ログレベル
@param message 出力メッセージ