(57)【要約】【課題】イベントログに出力させる箇所を効率よく限定したり、動的に変更可能とするロギングシステムを提供する。【解決手段】ログファイル１３として記録されるイベントログの取得対象となるメソッドをクラス名で指定する情報を設定するログ出力設定テーブル１２と、イベントログの取得対象となるメソッドの呼び出し前に呼び出されるプリコールメソッドと、当該メソッドの返り後に呼び出されるポストコールメソッドとをクラスの関数として有し、プリコールメソッドおよびポストコールメソッドの呼び出し元のクラス名と、ログ出力設定テーブル１２に設定されたクラス名とを比較し、一致した場合、イベントログを出力状態に管理するログ管理プログラム１１と、ログ管理プログラムのプリコールメソッドおよびポストコールメソッドを、イベントログの取得対象となるメソッドの前後に有するアプリケーションコンポーネント１４〜１６とを備えている。【選択図】　　　　　　図１
2004094374.tif 000002
【特許請求の範囲】
【請求項１】
イベントログの取得対象となるメソッドを指定するための情報を設定する出力設定テーブルと、
イベントログの取得対象となるメソッドの呼び出し前に呼び出されるプリコールメソッドと、当該メソッドの返り後に呼び出されるポストコールメソッドとを有し、プリコールメソッド及びポストコールメソッドの呼び出し元に係る情報と、出力設定テーブルに設定された情報とを比較し、その比較結果に基づいてイベントログの出力状態を管理するログ管理プログラムと、
ログ管理プログラムのプリコールメソッド及びポストコールメソッドを、イベントログの取得対象となるメソッドの前後に有するアプリケーションコンポーネントと
を備えることを特徴とするロギングシステム。
【請求項２】
前記出力設定テーブルに設定される情報が、クラス名、メソッド名、トランザクション、セッション、イベントレベル又は当該メソッドの呼び出しのべ回数のしきい値の１又は複数であることを特徴とする請求項１記載のロギングシステム。
【請求項３】
前記ログ管理プログラムが、前記アプリケーションプログラム複数間のメソッド呼び出しの入れ子の階層数に基づいて、一連の前記複数のアプリケーションコンポーネントのメソッド呼び出しの起点と終点とを把握し、イベントログの出力状態をその起点と終点に応じて管理することを特徴とする請求項１又は２記載のロギングシステム。
【請求項４】
前記アプリケーションコンポーネントにおけるログ管理プログラムのプリコールメソッド及びポストコールメソッドが、当該アプリケーションコンポーネントのソースファイルを解析することでイベントログの取得対象となるメソッドの前後に自動挿入されたものであることを特徴とする請求項１〜３のいずれか１項に記載のロギングシステム。
【請求項５】
イベントログの取得対象となるメソッドのクラス名を設定する出力設定テーブルと、
イベントログの取得対象となるメソッドの呼び出し前に呼び出されるプリコールメソッドと、当該メソッドの返り後に呼び出されるポストコールメソッドとを有し、プリコールメソッド及びポストコールメソッドの呼び出し元のクラス名と、出力設定テーブルに設定されたクラス名とを比較し、その比較結果に基づいて、当該クラスのメソッドの処理開始から処理が返るまでのイベントログの出力状態を管理するログ管理プログラムと、
ログ管理プログラムのプリコールメソッド及びポストコールメソッドを、イベントログの取得対象となるメソッドの前後に有するアプリケーションコンポーネントと
を備えることを特徴とするロギングシステム。
【請求項６】
イベントログの取得対象となるメソッドの呼び出し前に呼び出されるプリコールメソッドと、当該メソッドの返り後に呼び出されるポストコールメソッドとを有し、プリコールメソッド及びポストコールメソッドが呼び出されたときに、当該ポストコールメソッドの引数の情報に基づいてイベントログの出力状態を管理するログ管理プログラムと、
ログ管理プログラムのプリコールメソッド及びポストコールメソッドをイベントログの取得対象となるメソッドの前後に有し、該ポストコールメソッドの呼び出し時にその引数に該イベントログの取得対象となるメソッドの成功又は失敗を示す情報を設定するアプリケーションコンポーネントと
を備えることを特徴とするロギングシステム。
【請求項７】
所定のテーブルにイベントログの取得対象となるメソッドを指定するための情報を設定する出力設定過程と、
イベントログの取得対象となるメソッドの呼び出し前に呼び出されるプリコールメソッドと、当該メソッドの返り後に呼び出されるポストコールメソッドとを有するプログラムを実行し、プリコールメソッド及びポストコールメソッドの呼び出し元に係る情報と、前記出力設定過程で前記テーブルに設定された情報とを比較し、その比較結果に基づいてイベントログの出力状態を管理するログ管理過程と、
アプリケーションコンポーネント内で、前記ログ管理過程で実行されるプログラムのプリコールメソッド及びポストコールメソッドを、イベントログの取得対象となるメソッドの前後で呼び出す呼出過程と
を有することを特徴とするロギング方法。
【請求項８】
所定のテーブルにイベントログの取得対象となるメソッドを指定するための情報を設定する出力設定過程と、
イベントログの取得対象となるメソッドの呼び出し前に呼び出されるプリコールメソッドと、当該メソッドの返り後に呼び出されるポストコールメソッドとを有するプログラムを実行し、プリコールメソッド及びポストコールメソッドの呼び出し元に係る情報と、前記出力設定過程で前記テーブルに設定された情報とを比較し、その比較結果に基づいてイベントログの出力状態を管理するログ管理過程と、
アプリケーションコンポーネント内で、前記ログ管理過程で実行されるプログラムのプリコールメソッド及びポストコールメソッドを、イベントログの取得対象となるメソッドの前後で呼び出す呼出過程と
をコンピュータを用いて実行するためのロギングプログラム。
【請求項９】
所定のテーブルにイベントログの取得対象となるメソッドを指定するための情報を設定する出力設定過程と、
イベントログの取得対象となるメソッドの呼び出し前に呼び出されるプリコールメソッドと、当該メソッドの返り後に呼び出されるポストコールメソッドとを有するプログラムを実行し、プリコールメソッド及びポストコールメソッドの呼び出し元に係る情報と、前記出力設定過程で前記テーブルに設定された情報とを比較し、その比較結果に基づいてイベントログの出力状態を管理するログ管理過程と、
アプリケーションコンポーネント内で、前記ログ管理過程で実行されるプログラムのプリコールメソッド及びポストコールメソッドを、イベントログの取得対象となるメソッドの前後で呼び出す呼出過程と
をコンピュータを用いて実行するためのロギングプログラムを記録したコンピュータ読み取り可能な記録媒体。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、オブジェクト指向プログラミング等によるシステムにおいてイベントをログする際に用いて好適なロギングシステムに関する。
【０００２】
【従来の技術】
ロギングシステムは、システムの故障監視や故障時の解析のために、イベントログをシステムの中に定義して、適宜コンソール画面やファイルに出力させるものである。従来のロギングシステムには、▲１▼イベントログ出力部分のソースコードを改変し、リコンパイルする方式（以下、方式Ａとする。）、▲２▼デバッガにより解析する方式（以下、方式Ｂとする。）、▲３▼プロファイラツールにより解析する方式（以下、方式Ｃとする。）等がある。
【０００３】
【発明が解決しようとする課題】
ロギングシステムでは、ログの出力量が多すぎると記録用ディスクの逼迫やログ解析の困難につながるため、目的にあわせて必要なログだけを出力させることが重要である。例えば、故障監視のためには、安定動作しているソフトウェア部品のログは出力させず、動作不安定な部品のログだけを出力させたい、といったケースがある。これを実現するには、ログ出力させる箇所を所望の箇所に限定する仕組みが必要である。
【０００４】
上述したような従来のシステムにおいて、開発時または運用時にログ出力させる箇所を所望の箇所に限定する場合には、次のような課題が考えられる。方式Ａでは、要求条件にあわせたソース改変とリコンパイルの作業が必要で、煩雑である。またコンパイルしたモジュールを入れ替えるためにシステムの中断時間が生じ、運用制約となる。方式Ｂでは、デバッグ情報を出力可能とするために特殊なコンパイルが必要で、情報を詳細に渡って多く取得できる代わりにシステムの処理性能が劣化する。デバッグ目的で開発時に使うには便利だが、性能が要求される運用時には向かない。そして、方式Ｃでは、ＯＳ（オペレーティングシステム）レベルや、ＶＭ（仮想マシン）等ミドルウェアレベルの情報取得が可能だが、アプリケーションで定義したログを扱うことはできない。
【０００５】
すなわち、上述したような従来のシステムでは、ログ出力させる箇所を所望の箇所に限定する際に、要求条件にあわせたソース改変とリコンパイルの作業が必要であったり、デバッグ情報を出力可能とするために特殊なコンパイルが必要であったり、あるいは、アプリケーションで定義したログを扱うことができなかったりという課題があった。例えば、従来方法において、ログ出力コードをソースに埋め込んで、直接ファイルに出力させる方法では、取得したいログが変わるたびに、ソース改造やリコンパイルおよびモジュール入換えが必要となるので、開発稼動面やシステム運用面で問題があった。
【０００６】
本発明は、上記のような事情を考慮してなされたもので、イベントログに出力させる箇所を効率よく限定したり、指定したりすることができるロギングシステムを提供することを目的とする。また、本発明は、特に、イベントログに出力させる箇所を効率良く動的に変更可能とするロギングシステムを提供することを目的とする。
【０００７】
【課題を解決するための手段】
上記課題を解決するため、請求項１記載の発明は、イベントログの取得対象となるメソッドを指定するための情報を設定する出力設定テーブルと、イベントログの取得対象となるメソッドの呼び出し前に呼び出されるプリコールメソッドと、当該メソッドの返り後に呼び出されるポストコールメソッドとを有し、プリコールメソッド及びポストコールメソッドの呼び出し元に係る情報と、出力設定テーブルに設定された情報とを比較し、その比較結果に基づいてイベントログの出力状態を管理するログ管理プログラムと、ログ管理プログラムのプリコールメソッド及びポストコールメソッドを、イベントログの取得対象となるメソッドの前後に有するアプリケーションコンポーネントとを備えることを特徴とする。
【０００８】
請求項２記載の発明は、前記出力設定テーブルに設定される情報が、クラス名、メソッド名、トランザクション、セッション、イベントレベル又は当該メソッドの呼び出しのべ回数のしきい値の１又は複数であることを特徴とする。請求項３記載の発明は、前記ログ管理プログラムが、前記アプリケーションプログラム複数間のメソッド呼び出しの入れ子の階層数に基づいて、一連の前記複数のアプリケーションコンポーネントのメソッド呼び出しの起点と終点とを把握し、イベントログの出力状態をその起点と終点に応じて管理することを特徴とする。請求項４記載の発明は、前記アプリケーションコンポーネントにおけるログ管理プログラムのプリコールメソッド及びポストコールメソッドが、当該アプリケーションコンポーネントのソースファイルを解析することでイベントログの取得対象となるメソッドの前後に自動挿入されたものであることを特徴とする。
【０００９】
請求項５記載の発明は、イベントログの取得対象となるメソッドのクラス名を設定する出力設定テーブルと、イベントログの取得対象となるメソッドの呼び出し前に呼び出されるプリコールメソッドと、当該メソッドの返り後に呼び出されるポストコールメソッドとを有し、プリコールメソッド及びポストコールメソッドの呼び出し元のクラス名と、出力設定テーブルに設定されたクラス名とを比較し、その比較結果に基づいて、当該クラスのメソッドの処理開始から処理が返るまでのイベントログの出力状態を管理するログ管理プログラムと、ログ管理プログラムのプリコールメソッド及びポストコールメソッドを、イベントログの取得対象となるメソッドの前後に有するアプリケーションコンポーネントとを備えることを特徴とする。
【００１０】
請求項６記載の発明は、イベントログの取得対象となるメソッドの呼び出し前に呼び出されるプリコールメソッドと、当該メソッドの返り後に呼び出されるポストコールメソッドとを有し、プリコールメソッド及びポストコールメソッドが呼び出されたときに、当該ポストコールメソッドの引数の情報に基づいてイベントログの出力状態を管理するログ管理プログラムと、ログ管理プログラムのプリコールメソッド及びポストコールメソッドをイベントログの取得対象となるメソッドの前後に有し、該ポストコールメソッドの呼び出し時にその引数に該イベントログの取得対象となるメソッドの成功又は失敗を示す情報を設定するアプリケーションコンポーネントとを備えることを特徴とする。
【００１１】
請求項７記載の発明は、所定のテーブルにイベントログの取得対象となるメソッドを指定するための情報を設定する出力設定過程と、イベントログの取得対象となるメソッドの呼び出し前に呼び出されるプリコールメソッドと、当該メソッドの返り後に呼び出されるポストコールメソッドとを有するプログラムを実行し、プリコールメソッド及びポストコールメソッドの呼び出し元に係る情報と、前記出力設定過程で前記テーブルに設定された情報とを比較し、その比較結果に基づいてイベントログの出力状態を管理するログ管理過程と、アプリケーションコンポーネント内で、前記ログ管理過程で実行されるプログラムのプリコールメソッド及びポストコールメソッドを、イベントログの取得対象となるメソッドの前後で呼び出す呼出過程とを有することを特徴とする。
【００１２】
請求項８記載の発明は、所定のテーブルにイベントログの取得対象となるメソッドを指定するための情報を設定する出力設定過程と、イベントログの取得対象となるメソッドの呼び出し前に呼び出されるプリコールメソッドと、当該メソッドの返り後に呼び出されるポストコールメソッドとを有するプログラムを実行し、プリコールメソッド及びポストコールメソッドの呼び出し元に係る情報と、前記出力設定過程で前記テーブルに設定された情報とを比較し、その比較結果に基づいてイベントログの出力状態を管理するログ管理過程と、アプリケーションコンポーネント内で、前記ログ管理過程で実行されるプログラムのプリコールメソッド及びポストコールメソッドを、イベントログの取得対象となるメソッドの前後で呼び出す呼出過程とをコンピュータを用いて実行するためのロギングプログラムである。請求項９記載の発明は、所定のテーブルにイベントログの取得対象となるメソッドを指定するための情報を設定する出力設定過程と、イベントログの取得対象となるメソッドの呼び出し前に呼び出されるプリコールメソッドと、当該メソッドの返り後に呼び出されるポストコールメソッドとを有するプログラムを実行し、プリコールメソッド及びポストコールメソッドの呼び出し元に係る情報と、前記出力設定過程で前記テーブルに設定された情報とを比較し、その比較結果に基づいてイベントログの出力状態を管理するログ管理過程と、アプリケーションコンポーネント内で、前記ログ管理過程で実行されるプログラムのプリコールメソッド及びポストコールメソッドを、イベントログの取得対象となるメソッドの前後で呼び出す呼出過程とをコンピュータを用いて実行するためのロギングプログラムを記録したコンピュータ読み取り可能な記録媒体である。
【００１３】
【発明の実施の形態】
以下、図面を参照して本発明によるロギングシステムの実施の形態について説明する。図１を参照して説明する実施の形態は、１または複数のコンピュータと、その周辺機器と、そのコンピュータで実行されるプログラムとから構成されるものである。図１には、そのコンピュータの記憶装置１０と、そのコンピュータに対して情報を入出力させるための設定端末２１および端末等２２とを示している。記憶装置１０は、主記憶装置と補助記憶装置とから構成されている。記憶装置１０内では、所定のＯＳ上でログ管理プログラム１１とアプリケーションコンポーネント１４〜１６とが実行され、また、ログ出力設定テーブル１２とログファイル１３とが記憶されるようになっている。
【００１４】
アプリケーションコンポーネント１４〜１６は、アプリケーションシステムの機能を実装するプログラム（アプリケーションシステムを構成するソフトウェアの部品）であり、オブジェクト指向プログラミングにおけるクラスで実装されている。各コンポーネント中には、ログ管理プログラム１１を介してイベントログに情報を出力するためのメソッドやデータが定義されている。そのメソッドによって、イベントログに記録されるログ情報が、ログ管理プログラム１１へと渡されるようになっている。この場合、アプリケーションコンポーネント１４、１５、および１６は、それぞれ、クラスＡ、Ｂ、およびＣ（＝Ａクラス、ＢクラスおよびＣクラスあるいはアプリケーションクラスＡ、Ｂ、およびＣ）で定義されるオブジェクトａ、ｂ、およびｃとして構成されている。各アプリケーションコンポーネント１４〜１６では、また、マウス、キーボード等からなる端末等２２に対する操作者の操作に応じてイベントが発生するようになっている。
【００１５】
ログ管理プログラム１１は、各アプリケーションコンポーネント１４〜１６から渡されるログ情報を一括管理するプログラムであり、オブジェクト指向プログラミングにおけるクラスで実装されている。ログ管理プログラム１１は、ログ出力設定テーブル１２に設定された条件（情報）にもとづいて各アプリケーションコンポーネント１４〜１６から渡されたログ情報をイベントログに出力するかしないかを判定する。出力する場合には、各アプリケーションコンポーネント１４〜１６から渡されたログ情報は、複数のイベントログからなるログファイル１３へと出力される。
【００１６】
ログ出力設定テーブル１２は、ログ出力の契機（起点および終点）となるクラス名を、出力設定クラス名として保持するファイルである。ログ出力設定テーブル１２内のデータは、外部設定端末２１から書き込むことができる。
【００１７】
次に、本システムの設定方法および動作について図２〜図９を参照して説明する。図２は、図１に示した各アプリケーションコンポーネント１４〜１６においてイベントログに対してログ管理プログラム１１を介して情報を出力するためのメソッドを起動するイベントのモデルを示す図である。図２に示すように、▲１▼各アプリケーションコンポーネント（オブジェクトａ〜ｃ）では、アプリケーションコンポーネント内の各メソッド呼出しの前後（呼び出し前および返り後）にそれぞれに対応するイベント（プリコールイベント３１およびポストコールイベント３２）が発生するように定義がなされている。▲２▼プリコールイベント３１は、メソッド（アプリケーションメソッド）呼出し開始を通知するイベントで、ログ管理プログラム１１のプリコールメソッドで実装される。▲３▼ポストコールイベント３２は、アプリケーションメソッド呼出しの完了（返り時）を通知するイベントで、ログ管理プログラム１１のポストコールメソッドで実装される。
【００１８】
次に、図３を参照して、アプリケーションコンポーネント１４〜１６におけるプリコールメソッドおよびポストコールメソッドの実装例について説明する。本実施の形態では、ログ情報を取得する可能性のあるすべてのメソッドの前後に、ログ管理プログラム１１のプリコールメソッドとポストコールメソッドを挿入するようにしている。
【００１９】
図３は、ログ出力用に、図２に示すプリコールイベント３１およびポストコールイベント３２に対応するプリコールメソッドおよびポストコールメソッドを挿入して改変したアプリケーションクラスＡのソースコードの一例を示す図である。図３では、ＡクラスがＢクラスを呼び出す例を示している。図３において、“ＬｏｇＭａｎａｇｅｒ”はログ管理プログラム１１のクラスであり、“ｂ”はＢクラスのオブジェクトである。図３に示すＡクラスのソースコードでは、関数“ｓｏｍｅＭｅｔｈｏｄ（）”内で、オブジェクトｂの関数“ｇｅｔＡｃｃｏｕｎｔ（ｎａｍｅ）”を呼び出すソースコードの前にプリコールメソッド“ＬｏｇＭａｎａｇｅｒ．ｐｒｅＣａｌｌ（．．．）”を挿入し、その後にポストコールメソッド“ＬｏｇＭａｎａｇｅｒ．ｐｏｓｔＣａｌｌ（．．．）”を挿入している。
【００２０】
図４は、ログ出力設定テーブル１２の一例を示す図である。ログ出力設定テーブル１２は、ログ出力契機となる（始点および終点となる）クラス名を保持する任意のレコード数からなるテーブルである。ログ出力設定テーブル１２内のデータは、外部設定端末２１等によって書き込まれる。ただし、システム内の任意のプログラムを経由してデータが書き込まれるようにしてもいい。
【００２１】
次に、図５〜図９を参照して、ログ管理プログラム１１について説明する。ログ管理プログラム１１は、上述したように、クラスとして実装され、ログ出力設定テーブル１２に設定された条件にもとづいて各アプリケーションコンポーネント１４〜１６から渡されたログ情報をイベントログに出力するかしないかを判定する機能を有している。ログ管理プログラム１１のクラスは、出力モード（変数）と、コールカウント（変数）と、プリコードメソッド（関数）と、ポストコードメソッド（関数）とを有するように定義されている。
【００２２】
出力モードは、イベントログにログ情報を出力するか否かの判定結果（出力モード）を示す値を保持する内部変数である。出力モードは、「ＯＮ」と「ＯＦＦ」の２値の何れかを取りうる。出力モードが「ＯＮ」の間、イベントログが出力される。「ＯＦＦ」の場合は、イベントログが出力されない。初期値は「ＯＦＦ」で、ログ出力開始時に「ＯＮ」になる。出力開始契機となったメソッドの処理が返ると「ＯＦＦ」になる。
【００２３】
コールカウントは、自然数を、内部変数として保持するものである。コールカウントは、出力モードが「ＯＮ」の間、一連のメソッド呼出しの入れ子の階層数を表す。初期値は「０」で、出力モードが「ＯＮ」の間、プリコールイベント毎にインクリメントし、ポストコールイベント毎にデクリメントする。
【００２４】
図５は、出力モードの状態遷移図である。初期状態（Ｓ５１）では、コールカウントが「０」に設定され、システムが開始すると（５１）、出力モードが「ＯＦＦ」の状態（Ｓ５２）になる。プリコールメソッドが呼び出されてプリコールイベントが発生した場合に、プリコールメソッドの呼出し元クラス名がログ出力設定テーブル１２に設定された出力設定クラス名の何れかに一致したときは（５２）、出力モードが「ＯＮ」の状態（Ｓ５３）になり、一致しないときは出力モードは「ＯＦＦ」の状態のままとなる。また、ポストコールメソッドが呼び出された場合は、出力モードは「ＯＦＦ」の状態のままとなる。
【００２５】
出力モードが「ＯＮ」の状態（Ｓ５３）の場合に、さらにプリコールメソッドが呼び出されてプリコールイベントが発生したとき（５３）には、出力モードは「ＯＮ」の状態（Ｓ５３）で変化しない。ただし、コールカウントは、そのとき、プリコールイベント毎にインクリメントする。
【００２６】
出力モードが「ＯＮ」の状態（Ｓ５３）の場合に、ポストコールメソッドが呼び出されてポストコールイベントが発生したときには、コールカウントの値によって遷移する状態が変化する。すなわち、コールカウントが「０」より大きいとき（５４）は、出力モードは「ＯＮ」の状態（Ｓ５３）で変化しない。ただし、コールカウントは、ポストコールイベント毎にデクリメントする。一方、コールカウントが「０」のとき（５５）は、出力モードは「ＯＦＦ」の状態（Ｓ５２）になる。
【００２７】
出力モードが「ＯＦＦ」の状態（Ｓ５２）の場合に、システムが終了したときには、初期状態（Ｓ５１）に遷移する。
【００２８】
次に、図６および図７を参照して、ログ管理プログラム１１のクラスのプリコールメソッドについて説明する。図６はプリコールメソッドの仕様を示す図表、図７はプリコールメソッドのフローチャートである。図６に示すように、プリコールメソッドは、返り値を「任意（なし、または成功／失敗）」とし、引数を「呼出し元クラス名」および「アプリケーションで定義した任意のログ情報」とする関数である。その処理内容は、▲１▼ログ出力設定テーブル１２の設定内容とアプリケーションコンポーネントのクラス名を比較し、出力モードを判定・設定することと、▲２▼出力モードが「ＯＮ」の場合、コールカウントをインクリメントし、ログ出力を実行することである。
【００２９】
図７を参照して、プリコールメソッドの処理の流れを説明する。プリコールメソッドでは、まず、ログ出力設定テーブル１２にレコードが存在するか否かが判定される（ステップ１０１）。レコードが存在する場合、すなわち、ログ出力設定テーブル１２に１以上の任意の出力設定クラス名が設定されている場合、次に、コールカウントが「０」か否かが判定される（ステップ１０２）。一方、レコードが存在しない場合は、コールカウントのインクリメント、ログ出力等の処理は行われずに、そのまま関数内の処理が終了する（ステップ１０１で「ｆａｌｓｅ」→終了）。
【００３０】
次に、ステップ１０２で、コールカウントが「０」であると判定された場合は、ログ出力設定テーブル１２からレコードを取得する処理が行われ（ステップ１０３）、次にプリコールメソッドのメソッド引数から呼び出し元クラス名を取得する処理が行われる（ステップ１０４）。続いてレコード内のクラス名のいずれかに呼出し元クラス名が一致するか否かが判定される（ステップ１０５）。一致した場合、出力モードを「ＯＮ」にする処理が行われ（ステップ１０６）、一致しなかった場合、関数内の処理が終了する（ステップ１０５で「ｆａｌｓｅ」→終了）。
【００３１】
ステップ１０６で出力モードを「ＯＮ」にした場合、および、ステップ１０２でコールカウントが「０」でないと判定された場合、コールカウントをインクリメントする処理が行われる（ステップ１０７）。次に、次にプリコールメソッドのメソッド引数からアプリケーションコンポーネント内で定義された任意のログ情報を取得する処理が行われた後、取得したログ情報に基づいてログファイル１３に対するログ出力が行われる（ステップ１０８）。ここで、関数内の処理が終了する。
【００３２】
次に、図８および図９を参照して、ログ管理プログラム１１のクラスのポストコールメソッドについて説明する。図８はポストコールメソッドの仕様を示す図表、図９はポストコールメソッドのフローチャートである。図８に示すように、ポストコールメソッドは、返り値を「任意（なし、または成功／失敗）」とし、引数を「アプリケーションで定義した任意のログ情報」とする関数である。その処理内容は、▲１▼出力モード「ＯＮ」の場合、コールカウントをデクリメントし、ログ出力することと、▲２▼デクリメントによってコールカウントが「０」になったら出力モードを「ＯＦＦ」にすることである。
【００３３】
図９を参照して、ポストコールメソッドの処理の流れを説明する。ポストコールメソッドでは、まず、出力モードが「ＯＮ」か否かが判定される（ステップ１１１）。出力モードが「ＯＮ」の場合、コールカウントをデクリメントする処理が行われ（ステップ１１２）、続いてログ出力が行われる（ステップ１１３）。次に、コールカウントが「０」か否かを判定する処理が行われる（ステップ１１４）。ステップ１１４でコールカウントが「０」と判定された場合、出力モードを「ＯＦＦ」にする処理が行われて（ステップ１１５）、関数内の処理が終了する。
【００３４】
一方、ステップ１１１で出力モードが「ＯＮ」でないと判定された場合、および、ステップ１１４でコールカウントが「０」でないと判定された場合、コールカウントのデクリメント、ログ出力等の処理は行われずに関数内の処理が終了する。
【００３５】
次に、図１０および図１１を参照して、図１に示すロギングシステムにおける処理の流れについて具体例を示して説明する。図１０は、図１のロギングシステムにおけるログ出力の際の一連の処理の流れを示すシークエンス図であり、図１１は、図１０に示す各ログ出力時の出力例を示す図である。この場合、ログ設定テーブル１２には、クラスＡを出力設定クラスとするレコードが存在するものとする。また、ログ管理プログラム１１の遷移状態は図５に示す初期状態（Ｓ５１）にあるものとする。
【００３６】
また、図１０に示す例は、Ａクラスのオブジェクトａ（図１の参照符号１４）→Ｂクラスのオブジェクトｂ（１５）→Ｃクラスのオブジェクトｃ（１６）の順に各オブジェクトのメソッドが呼出される処理の一例である。この例では、アカウント××取得処理を行うために（「××」は任意のアカウント名を表す。）、Ａクラスのオブジェクトａ（１４）がＢクラスのオブジェクトｂ（１５）のメソッド「ｇｅｔＡｃｃｏｕｎｔ」を呼び出し、Ｂクラスのオブジェクトｂ（１５）のメソッド「ｇｅｔＡｃｃｏｕｎｔ」がアカウント××有効チェック処理を行うために、Ｃクラスのオブジェクトｃ（１６）のメソッド「ｉｓＶａｉｄ」を呼び出す処理を行うこととしている。
【００３７】
また、Ａクラスのオブジェクトａ（１４）からＢクラスのオブジェクトｂ（１５）のメソッド「ｇｅｔＡｃｃｏｕｎｔ」を呼び出すステップの前後には、図３に示すようにプリコールメソッドおよびポストコールメソッドが挿入されていて、同様に、Ｂクラスのオブジェクトｂ（１５）のメソッド「ｇｅｔＡｃｃｏｕｎｔ」がＣクラスのオブジェクトｃ（１６）のメソッド「ｉｓＶａｉｄ」を呼び出すステップの前後にも図３に示すようなプリコールメソッドおよびポストコールメソッドが挿入されているものとする。
【００３８】
したがって、図１０に示すように、Ａクラスのオブジェクトａ（１４）がＢクラスのオブジェクトｂ（１５）のメソッド「ｇｅｔＡｃｃｏｕｎｔ」を呼び出す際には、ログ管理プログラム１１のクラスのプリコールメソッドが呼び出されることになる（ステップ２０１）。ログ管理プログラム１１では、この場合、図５および図７を参照して説明したように、出力モードが「ＯＦＦ」から「ＯＮ」に変化するとともに、コールカウントに「１」がセットされる（ステップ２０２）。そして、ログ出力が行われて（ステップ２０３）、プリコールメソッドの引数に基づいて例えば図１１のログ情報２２１（「アカウント××取得処理開始／呼び出し元：Ａクラス／呼び出し先：Ｂクラス／メソッド：ｇｅｔＡｃｃｏｕｎｔ」）がログファイル１３に記録される。
【００３９】
次に、実際に、Ａクラスのオブジェクトａ（１４）からＢクラスのオブジェクトｂ（１５）のメソッド「ｇｅｔＡｃｃｏｕｎｔ」の呼び出し処理が行われる（ステップ２０４）。この場合、Ｂクラスのオブジェクトｂ（１５）のメソッド「ｇｅｔＡｃｃｏｕｎｔ」は、さらに、Ｃクラスのオブジェクトｃ（１６）のメソッド「ｉｓＶａｉｄ」を呼び出す処理を行う。その際、Ｂクラスのオブジェクトｂ（１５）では、Ｃクラスのオブジェクトｃ（１６）のメソッド「ｉｓＶａｉｄ」を呼び出す処理の前に、ログ管理プログラム１１のクラスのプリコールメソッドを呼び出す処理が行われる（ステップ２０５）。ログ管理プログラム１１では、出力モードが「ＯＮ」となっているので、コールカウントがインクリメントされて値が「２」になり（ステップ２０６）、その後、ログ出力が行われる（ステップ２０７）。ここでは、プリコールメソッドの引数に基づいて、例えば図１１のログ情報２２２（「アカウント××有効チェック処理開始／呼び出し元：Ｂクラス／呼び出し先：Ｃクラス／メソッド：ｉｓＶａｉｄ」）がログファイル１３に記録される。
【００４０】
次に、実際に、Ｂクラスのオブジェクトｂ（１５）のメソッド「ｇｅｔＡｃｃｏｕｎｔ」からＣクラスのオブジェクトｃ（１６）のメソッド「ｉｓＶａｉｄ」を呼び出す処理が行われる（ステップ２０８）。ここで、Ｃクラスのオブジェクトｃ（１６）のメソッド「ｉｓＶａｉｄ」が実行されて（ステップ２０９）、応答信号がＢクラスのオブジェクトｂ（１５）に渡される（ステップ２１０）。次に、ログ管理プログラム１１のクラスのポストコールメソッドが呼び出される（ステップ２１１）。
【００４１】
ログ管理プログラム１１では、この場合、図５および図９を参照して説明したように、コールカウントがデクリメントされて値が「１」になり（ステップ２１２）、その後、ログ出力が行われる（ステップ２１３）。この場合、ポストコールメソッドの引数に基づいて例えば図１１のログ情報２２３（「アカウント××有効チェック処理失敗（アカウント名無効）／呼び出し元：Ｂクラス／呼び出し先：Ｃクラス／メソッド：ｉｓＶａｌｉｄ」）がログファイル１３に記録される。
【００４２】
次に、Ｂクラスのオブジェクトｂ（１５）のメソッド「ｇｅｔＡｃｃｏｕｎｔ」が終了すると、応答信号がＡクラスのオブジェクトａ（１４）に渡される（ステップ２１４）。次に、Ａクラスのオブジェクトａ（１４）から、ログ管理プログラム１１のクラスのポストコールメソッドが呼び出される（ステップ２１５）。
【００４３】
ログ管理プログラム１１では、この場合、図５および図９を参照して説明したように、出力モードが「ＯＮ」から「ＯＦＦ」に変化するとともに、コールカウントがデクリメントされて「０」にリセットされる（ステップ２１６）。次に、ログ出力が行われて（ステップ２１７）、ポストコールメソッドの引数に基づいて例えば図１１のログ情報２２４（「アカウント××取得処理失敗（アカウント取得不可）／呼び出し元：Ａクラス／呼び出し先：Ｂクラス／メソッド：ｇｅｔＡｃｃｏｕｎｔ」）がログファイル１３に記録される。
【００４４】
以上説明したように、本実施の形態は、アプリケーションコンポーネント（アプリケーションプログラム）がログを直接外部出力せず、ログ管理プログラム１１がログ出力設定テーブル１２を参照しながら各アプリケーションコンポーネント１４〜１６からのログ情報を一括管理してログ出力するソフトウェア構成を採用している。また、ログ管理プログラム１１における、メソッド呼出しの入れ子の階層数のカウントによって、一連の複数メソッド呼出しの起点と終点を把握する仕組みを用いるようにしている。そのため、クラス名を指定することでイベントログの取得範囲を指定することが可能となり、また、メソッド呼出しが入れ子状態となっていても、該当クラスのメソッドの処理開始から処理が返るまでのログを取得することが可能となった。さらに、システム動作中にログ出力設定テーブル１２の内容を変更することで、ログ対象のコンポーネント（クラス）名を動的に変更したり指定することが可能となった。また、該当クラスの次のメソッド呼出しを起点とし、該当クラスの呼出しに処理が戻ってくるまでのイベントログを出力させることができるようになった。
【００４５】
次に、本実施の形態のシステム全体の設定と動作について、本システムを開発時に使用する場合と、運用時に使用する場合とに分けて説明する。まず、開発時について説明する。
【００４６】
開発時には、まず、▲１▼出力させる可能性のあるイベントログを全てアプリケーションコンポーネント内に定義しておく。すなわち、イベントログに出力すべきログ情報を各アプリケーションコンポーネント内に定義しておくのである。次に、▲２▼ログ管理プログラムを実装する。そして、▲３▼各アプリケーションコンポーネントに、ログ管理プログラムへログ情報を送信するメソッド（プリコールメソッドおよびポストコールメソッド）を実装する。
【００４７】
一方、運用時には、まず、▲１▼外部設定端末によって、ログ出力設定テーブルに所望のクラス名を設定する。▲２▼システム運転中は、▲１▼で設定したクラス（オブジェクト）のメソッドが呼出されるのを契機に、ログ出力が開始される。そして、▲３▼呼出されたメソッドに処理が戻るまでの間、ログ情報がファイル出力される。
【００４８】
次に、図１〜図９を参照して説明した上記実施の形態の変形例について説明する。ここでは、（ア）ログ取得範囲を指定する方法のカスタマイズ、（イ）マルチスレッド対応、（ウ）アプリケーションコンポーネントへプリコールメソッド、ポストコールメソッドを自動挿入する場合の変形例、および、（エ）不安定な動作をするコンポーネントのログだけを取得する場合の変形例に分けて説明する。
【００４９】
（ア）ログ取得範囲を指定する方法のカスタマイズ：上記実施の形態では、ログ取得範囲として、始点および終点となる「クラス名」を指定しているが、下記のように、クラス名以外の属性（▲１▼〜▲５▼）によってログ取得範囲を指定することも可能である。さらに、下記の１または複数の属性とクラス名、あるいは複数の属性を組み合わせることも可能である。各属性は、例えば、図１のログ出力設定テーブル１２に、各属性に対応するフィールドを追加することで設定可能である。
【００５０】
▲１▼メソッド指定：特定のメソッドを起点とする処理間のログを取得したい場合には、上記実施の形態に以下のカスタマイズを行うことで実現可能である。
【００５１】
１）プリコールメソッドおよびポストコールメソッドの引数にアプリケーションクラスのメソッド名を含ませる。そして、２）出力設定テーブルに、クラス名フィールドに対応してメソッド名フィールドを追加する。そして、３）ログ管理プログラム１１内では、クラス名とメソッド名を判定条件とすることで出力モードの設定を行うようにする。
【００５２】
▲２▼トランザクション指定：ＤＢ（データベース）の更新、ロールバック等のトランザクション管理のため、一連のメソッド呼び出しに対してトランザクション境界を設定することがある。トランザクション境界の内側のログだけを出力させることは、以下のカスタマイズによって実現可能である。
【００５３】
１）プリコールおよびポストコール毎に、アプリケーションメソッドにトランザクションが設定されているか否かを判定し、設定されている場合はトランザクションＩＤ（識別符号）を取得する。そして、２）同一のトランザクションＩＤが設定されたメソッドをログ出力するようにする。ただし、トランザクションＩＤを取得するメソッドをアプリケーションクラスで実装することが前提である。
【００５４】
▲３▼セッション指定：ＨＴＴＰ（ＨｙｐｅｒＴｅｘｔ　Ｔｒａｎｓｆｅｒ　Ｐｒｏｔｏｃｏｌ）セッション管理のために、複数のＨＴＴＰコネクションに渡る端末要求に対して、同一のセッションＩＤを付与して、一連のメソッド間でセッションＩＤを持ち回ることがある。同一セッションの呼び出しのみをログ出力させることは、前記のトランザクションＩＤの代わりにセッションＩＤを用いることで実現できる。
【００５５】
▲４▼イベントレベル指定：システム運転へ影響の大きいイベントログだけを取得した場合がある。Ｆａｔａｌ、Ｗａｒｎｉｎｇ、Ｅｒｒｏｒ、Ｉｎｆｏｒｍａｔｉｏｎ等のイベントレベルを閾値とし、閾値以上のイベントだけをログ出力させることが可能である。
【００５６】
Ｆａｔａｌ、Ｗａｒｎｉｎｇ、Ｅｒｒｏｒ、Ｉｎｆｏｒｍａｔｉｏｎのレベルの場合の例：１）プリコールイベントのイベントレベルは、全てｉｎｆｏｒｍａｔｉｏｎ（エラーではない情報通知のレベル）とする。２）ポストコールイベントのイベントレベルは、各アプリケーションメソッドの返り値毎に定義する。返り値にはイベントレベルデータを含ませ、ポストコールメソッドの引数によってログ管理プログラムへ渡す。３）ログ出力設定テーブルに閾値レベルを追加する。４）ログ管理プログラムは、ログ出力設定テーブル内の閾値と、アプリケーションから渡されたレベルを比較し、適宜出力する。
【００５７】
▲５▼のべ呼出し回数指定：ソフトウェア改造時、初期不良をチェックするために初期運転期間だけ、ログを取得したい場合がある。指定したのべ呼出し回数に達するまで、ログ出力させる。この場合、１）同一コンポーネント（もしくはメソッド）の呼び出しのべ回数に閾値を設け、ログ出力テーブルに設定する。２）コンポーネント（もしくはメソッド）毎にプリコールメソッドののべ呼出し回数を常時カウントする。そして、３）カウント数と閾値を比較して、適宜出力する。
【００５８】
（イ）マルチスレッド対応：上記実施の形態では、アプリケーションクラスがシングルスレッドで動作することを前提とするが、マルチスレッド時には、イベント毎にスレッドＩＤを取得し、スレッドＩＤ毎にコールカウントを管理することで対応可能である。
【００５９】
（ウ）アプリケーションコンポーネントへのプリコールメソッド、ポストコールメソッドの自動挿入：開発時に、各コンポーネントにプリコールメソッドとポストコールメソッドを挿入する作業はコンポーネント数が多い場合に煩雑な作業となるが、ソース解析機能と組み合わせれば、容易に該当クラスのメソッドの前後に両メソッドのテンプレートを自動挿入することができ、開発稼動を削減できる。以下、図１２を参照して、プリコールメソッドおよびポストコールメソッドを自動挿入する場合の構成について説明する。
【００６０】
図１２を参照して説明するロギング用のメソッドをソースコード中に一括自動挿入する方法では、オブジェクト指向言語（Ｊａｖａ（登録商標）、Ｃ＋＋等）のソースコードに対して、ログ取得対象とするクラスを指定して、そのクラスのメソッドがソースコード中に存在した場合、その前後の行にロギングメソッド（プリコールメソッドおよびポストコールメソッド）を自動一括挿入する。より具体的に説明すると、例えば、取得する可能性のあるクラスを「ログ取得対象クラスリスト」に挙げ、そのクラスのうちから、運用中に特に指定して出力させるクラスを、上記実施の形態と同様にログ出力設定テーブルに記述するようにする。以下、１）および２）に項目分けして説明する。
【００６１】
１）ログ取得対象クラスリスト作成：まず、図１２（ａ）に示すように、自作したクラス名をすべて列挙して、ログ取得対象クラスリストを作成する。この自作したクラス名をすべて列挙するログ取得対象クラスリストは、その作成を省略することも可能である。ただし、このリストを作成しない場合、標準ライブラリとして提供されているクラスもログ取得され、煩雑になりかねないのでその点に留意する必要がある。ログ取得対象クラスリストの作成は、例えば、人が手作業で実施する。ログ取得対象クラスリストの内容は、クラス名もしくはパッケージ名＋クラス名等のクラスを一意付ける文字を含むものとする。
【００６２】
２）ソースコードへのロギングメソッド挿入：ロギングメソッド挿入は、以下のａ）〜ｃ）の処理によって行うことができる。
【００６３】
ａ）ソースコード中、ログ取得対象クラスリスト内のクラスの型で宣言されたインスタンス変数を検出する。ここで、クラスの型とは、クラス名のことである。図１２（ｂ）に示す例では、「ＭｙＣｌａｓｓ１」がクラスの型であり、「ｃ１」がインスタンス変数名である。
【００６４】
ｂ）検出されたインスタンス変数へのメソッド呼出しを検出する。ただし、宣言された行と同一のスコープにあることを確認する。これはスコープの境界を示す文字「｛｝や「」」を検出することで実現可能である。ここで、スコープとは、カッコ等で挟まれた変数名の宣言が有効な範囲のことである。例えば、図１２（ｃ）に示す例では、Ｊａｖａ（登録商標）言語の場合、「ｃ１．ｍｅｔｈｏｄＡ（）；」を検出し、Ｃ＋＋言語の場合、「ｃ１−＞ｍｅｔｈｏｄＡ（）；」を検出する。
【００６５】
ｃ）そして、検出されたメソッド呼出しの前後にロギングメソッドを挿入する。例えば、「ｃ１．ｍｅｔｈｏｄＡ（）；」に対しては、図１２（ｄ）に示すように、その前後に、「ＬｏｇＭａｎａｇｅｒ．ｐｒｅＣａｌｌ（）；」というプリコールメソッドを挿入するとともに、「ＬｏｇＭａｎａｇｅｒ．ｐｏｓｔＣａｌｌ（）；」というポストコールメソッドを挿入する。
【００６６】
（エ）不安定な動作をするコンポーネントのログだけを取得する方法：この方法について、図１３〜図１５を参照して説明する。この方法では、複数のコンポーネント間の一連の呼出しにおいて、不安定なコンポーネントを「一連の呼び出しの中で最初にエラーを発生させたコンポーネント」と定義する。例えば、コンポーネントＡから呼出しが開始し、正常動作の場合はコンポーネントＡ→Ｂ→Ｃ→Ｄ→Ｅ→Ｄ→Ｃ→Ｂ→ＡとコンポーネントＡへ処理が返る場合、コンポーネントＤ内の処理がエラーとなると、コンポーネントＤはコンポーネントＥを呼び出さずにコンポーネントＣへエラーを示すメッセージを返す。この時、一連の呼出し処理はコンポーネントＡ→Ｂ→Ｃ→Ｄ→Ｃ→Ｂ→Ａとなる。コンポーネントＤからエラーを返されたコンポーネントＣもまた、エラーをコンポーネントＢに返し、コンポーネントＢも同様にコンポーネントＡへエラーを返すが、この場合、コンポーネントＣ、Ｂの処理自体にはエラーはない。よって、不安定な動作をするコンポーネントのログだけを取得するにはエラーの発生源であるコンポーネントＤのログだけを取得できればよい。
【００６７】
実現方法：図１を参照して説明した上記実施の形態に対し、以下のａ）〜ｃ）のカスタマイズを施すことで実現可能である。
【００６８】
ａ）各アプリケーションコンポーネントの全アプリケーションメソッドに対し、返り値に成功と失敗を定義し、ポストコールメソッドの引数にそのアプリケーションメソッドの返り値（成功／失敗）を含ませる。
【００６９】
ｂ）ログ管理プログラムは出力履歴値を変数として保持する。図１３は、ログ管理プログラムの出力履歴値の状態遷移図である。初期状態（Ｓ７１）で、システムが開始すると（７１）、出力履歴値は「０」に設定された状態になる（Ｓ７２）。出力履歴値が「０」の状態（Ｓ７２）で、プリコールイベントが発生した場合（７２）は、出力履歴値に変化は発生しない。一方、出力履歴値が「０」の状態（Ｓ７２）で、ポストコールイベントが発生した場合に、ログ出力が実行される条件が整っているとき（７２）は、出力履歴値が「１」に設定された状態になる（Ｓ７３）。また、出力履歴値が「０」の状態（Ｓ７２）で、ポストコールイベントが発生した場合に、ログ出力が実行される条件が整っていないとき（７４）は、出力履歴値に変化は発生しない。
【００７０】
出力履歴値が「１」の状態（Ｓ７３）で、プリコールイベントが発生した場合（７５）は、出力履歴値に変化は発生しない。また、出力履歴値が「１」の状態（Ｓ７３）で、ポストコールイベントが発生した場合に、コールカウントが「０」より大きいとき（７６）も、出力履歴値に変化は発生しない。一方、出力履歴値が「１」の状態（Ｓ７３）で、ポストコールイベントが発生した場合に、コールカウントが「０」に等しいとき（７７）は、出力履歴値は「１」に設定される状態になる（Ｓ７２）。
【００７１】
ｃ）プリコールメソッド、ポストコールメソッドはそれぞれ図１４、図１５のフローチャートを実装する。図１４は、プリコールメソッドのフローチャートであり、図１５は、ポストコールメソッドのフローチャートである。
【００７２】
図１４に示すように、本変形例のプリコールメソッドでは、コールカウントがインクリメントされて、処理が返えるようになっている。一方、本変形例のポストコールメソッドでは、図１５に示すように、まず、コールカウントがデクリメントする（ステップ２１１）。次に、ポストコールメソッド引数内のアプリケーションメソッドの返り値がエラーか否かが判定される（ステップ２１２）。ステップ２１２で返り値がエラーであると判定された場合、出力履歴値が「０」か否かが判定される（ステップ２１３）。ステップ２１３で出力履歴値が「０」であると判定された場合、ログ出力が行われ（ステップ２１４）、続いて出力履歴値が「１」に設定される（ステップ２１５）。次に、コールカウントが「０」か否かが判定され（ステップ２１６）、「０」である場合は、出力履歴値が「０」にされ（ステップ２１７）、処理が終了する。一方、ステップ２１２で返り値がエラーでないと判定された場合、および、ステップ２１３で出力履歴値が「０」でないと判定された場合、そのまま処理が終了する。
【００７３】
不安定な動作をするコンポーネントのログだけを取得する方法については、上記実施の形態と比較した場合、図５の代わりに図１３、図７の代わりに図１４、そして、図９の代わりに図１５に示す各機能あるいは構成を用いることになる。また、図１０についてはログの出力タイミングが変わる。そして、図８に関しては、ポストコールメソッドの仕様が変わり、引数に「アプリケーションメソッドの返値（成功／失敗）」が追加になる。
【００７４】
以上、本発明の実施の形態およびその変形例について説明したが、本発明の実施の形態は上記のものに限定されることなく、例えば、コンピュータ、端末等の各構成、プログラム、コンポーネントプログラム等のソフトウェアや、ログ管理テーブルやログファイルのファイルについては、それらをネットワーク等を介して分散して配置する等の変更を適宜、適用可能である。また、本発明の構成要素となるプログラムの全部または一部は、コンピュータ読み取り可能な記録媒体や通信回線を介して頒布することが可能である。
【００７５】
また、特許請求の範囲の記載においては、装置、方法等のカテゴリを適宜変更可能である。例えば、請求項５や請求項６記載のシステムは、請求項１のシステムと請求項７記載の方法との間の関係と同様にして、方法の発明とすることが可能である。
【００７６】
【発明の効果】
本発明によれば、イベントログの取得対象となるメソッドを指定するための情報を設定する出力設定テーブルを設け、ログ管理プログラムにおいてプリコールメソッド及びポストコールメソッドの呼び出し元に係る情報と、出力設定テーブルに設定された情報とを比較し、その比較結果に基づいてイベントログの出力状態を管理するようにしたので、イベントログに出力させる箇所を効率よく限定したり、指定したりすることができ、また、イベントログに出力させる箇所を効率良く動的に変更可能とすることができる。
【図面の簡単な説明】
【図１】本発明によるロギングシステムの一実施の形態のソフトウェア構成等の構成を示すシステム図。
【図２】図１に示す構成におけるイベントモデルを示す図。
【図３】図１に示すアプリケーションコンポーネントＡ（１４）のソースコードの一例を示す図。
【図４】図１のログ出力設定テーブル１２の一構成例を示す図。
【図５】図１のログ管理プログラム１１内の変数である出力モードの状態遷移図。
【図６】図１のログ管理プログラム１１内の関数であるプリコールメソッドの仕様を示す図表。
【図７】図１のログ管理プログラム１１内の関数であるプリコールメソッドのフローチャート。
【図８】図１のログ管理プログラム１１内の関数であるポストコールメソッドの仕様を示す図表。
【図９】図１のログ管理プログラム１１内の関数であるポストコールメソッドのフローチャート。
【図１０】図１のシステムにおけるイベントログに関する一連の処理のシークエンス図。
【図１１】図１０に示すイベントログに関する一連の処理におけるログファイル１３への出力例を示す図。
【図１２】図１に示す実施の形態の変形例（プリコールメソッドおよびポストコールメソッドを自動挿入する例）を説明するための図。
【図１３】図１に示す実施の形態の他の変形例（不安定な動作をするコンポーネントのログだけを取得する例）における出力履歴値の状態遷移図。
【図１４】図１３の変形例におけるプリコールメソッドのフローチャート。
【図１５】図１３の変形例におけるポストコールメソッドのフローチャート。
【符号の説明】
１１　ログ管理プログラム
１２　ログ出力設定テーブル
１３　ログファイル
１４〜１６　アプリケーションコンポーネント
２１　設定端末
２２　端末等
３１　プリコールイベント（実装：プリコールメソッド）
３２　ポストコールイベント（実装：ポストコールメソッド）
【図１】
2004094374.tif 000003
【図２】
2004094374.tif 000004
【図３】
2004094374.tif 000005
【図４】
2004094374.tif 000006
【図５】
2004094374.tif 000007
【図６】
2004094374.tif 000008
【図７】
2004094374.tif 000009
【図８】
2004094374.tif 000010
【図９】
2004094374.tif 000011
【図１０】
2004094374.tif 000012
【図１１】
2004094374.tif 000013
【図１２】
2004094374.tif 000014
【図１３】
2004094374.tif 000015
【図１４】
2004094374.tif 000016
【図１５】
2004094374.tif 000017