(57)【要約】【課題】  アプリケーションプログラムの障害発生の際に、障害内容等の判別のために必要なログ情報のみをファイル装置に出力することにより、ログ情報を効率よく記録，管理することを可能とするログ情報出力制御装置を提供する。【解決手段】  ログ出力制御プログラム１２０は、内部情報受信手段１２１，詳細ログ情報生成手段１２２，詳細ログ情報格納手段１２３，プログラムエラー情報受信手段１２４，障害ログ情報生成手段１２５,詳細ログ出力要求手段１２６，ログメッセージ生成手段１２７，ログメッセージ出力手段１２８の各処理手段と、一時記憶領域としての詳細ログ情報保持領域１２９とを備える。詳細ログ出力手段１２６により、プログラムエラー情報受信のタイミングの直前及び直後の所定範囲内で詳細ログ情報保持領域１２９に格納された詳細ログ情報をログ記憶装置１３０の記憶対象として出力することとしている。【選択図】      図１
2007058265.tif 000002
【特許請求の範囲】
【請求項１】
アプリケーションプログラムから出力された内部情報と、プログラムエラー情報とに基づき、ログメッセージを生成して記憶装置に記憶するログ出力制御装置において、
前記内部情報を一時記憶領域に格納する手段と、
前記プログラムエラー情報の受信時を基準とした任意の範囲の内部情報を前記一時記憶領域から取得して、前記ログメッセージを生成する手段と、
生成したログメッセージを前記記憶装置に記憶する手段とを備えることを特徴とするログ出力制御装置。
【請求項２】
前記任意の範囲の内部情報は、
前記プログラムエラー情報の受信時に格納された内部情報を基準とした前，後の所定数の内部情報を示すことを特徴とする請求項１に記載のログ出力制御装置。
【請求項３】
前記任意の範囲の内部情報は、
前記プログラムエラー情報の受信時を基準とした前，後の所定時間内に格納された内部情報を示すことを特徴とする請求項１に記載のログ出力制御装置。
【請求項４】
アプリケーションプログラムから出力された内部情報と、プログラムエラー情報とに基づき、ログメッセージを生成して記憶装置に記憶する処理をコンピュータに実行させるログ出力制御プログラムにおいて、
前記内部情報を一時記憶領域に格納する処理と、
前記プログラムエラー情報の受信時を基準とした任意の範囲に格納された内部情報を前記一時記憶領域から取得して、前記ログメッセージを生成する処理と、
生成したログメッセージを前記記憶装置に記憶する処理と
を前記コンピュータに実行させることを特徴とするログ出力制御プログラム。
【請求項５】
前記任意の範囲の内部情報は、
前記プログラムエラー情報の受信時に格納された内部情報を基準とした前，後の所定数の内部情報を示すことを特徴とする請求項４に記載のログ出力制御プログラム。
【請求項６】
前記任意の範囲の内部情報は、
前記プログラムエラー情報の受信時を基準とした前，後の所定時間内に格納された内部情報を示すことを特徴とする請求項４に記載のログ出力制御プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、コンピュータシステム等におけるアプリケーションプログラムに関するログ情報の出力制御装置及びプログラムに関する。
【背景技術】
【０００２】
従来より、アプリケーションプログラムにおける障害発生の際の障害内容及び解決方法の判断材料の提供を目的として、アプリケーションプログラム自身の内部情報をログ情報としてファイル装置に格納する処理が一般に行われている。
この場合、可能な限り詳細な内部情報をログ情報として出力することで、障害内容及び解決方法の判断のための有用な資料を提供することが可能となる。
即ち、障害発生前の内部情報には、障害を発生させた原因となる情報が可能性が高く、また、障害発生後の内部情報も、発生した障害に対するエラー処理が正しく行われているかを判断するための材料となり、障害内容及び解決方法の判断がより容易ななものとなっていた。
例えば、ある障害発生が引き金となり後続する処理で別の障害が発生する場合、先に発生した障害のエラー処理が正しく行われているかを確認することで、後に発生した障害が、先に発生した障害のエラー処理の不備に起因するものかどうかを判断することが可能になる。
【０００３】
一方で、ログ情報として出力する内部情報が詳細なものになるほど、データ量が増加することとなるため、ログ情報を記録するファイル装置の容量が満杯になるまでの期間が短くなり、障害の判別・解決のために有効なログ情報を保存できなくなる可能性が高くなっていた。
この点について、従来のログ情報格納方式として、ホストシステムが出力するログ情報をファイル装置に書き出すとともに、出力したログ情報数を計測し、ログ情報数が閾値を超えた場合に、ファイル装置に書き出したログ情報を再び読み込み、ログ情報の重要度を判定し、重要度の高いログ情報だけを再びファイル装置に書き出して、重要度の低いログ情報は統計情報としてファイル装置に書き出す構成が公知となっている（例えば、特許文献１参照。）。
【特許文献１】特開平１０−２７５０９８号公報
【発明の開示】
【発明が解決しようとする課題】
【０００４】
しかし、前記特許文献１に記載の構成では、ログ情報の重要度の判断基準が明確ではなく、必ずしも障害内容や解決方法の判別に必要なログ情報の記録を行うことができないという問題があった。
また、ログ情報数の増加により、ファイル装置への書き出し処理も増加するため、より多くのコンピュータリソースを消費することとなっていた。従って、前記特許文献１のように、通常のログ情報の書き出しに加えて、重要度の判定のための再読み込みや書き戻しを行った場合、より一層のコンピュータリソースが消費され、アプリケーションプログラム自身のパフォーマンスの低下を引き起こす恐れがあった。
【０００５】
本発明は前記課題を解決するためのものであり、アプリケーションプログラムのログ情報の出力制御装置として、アプリケーションプログラムの障害発生の際に、障害内容等の判別のために必要なログ情報のみをファイル装置に出力することにより、ログ情報を効率よく記録，管理することを可能とするログ情報出力制御装置を提供することを目的とする。
【課題を解決するための手段】
【０００６】
前記課題を解決するため本発明のログ出力制御装置は、アプリケーションプログラムから出力された内部情報と、プログラムエラー情報とに基づき、ログメッセージを生成して記憶装置に記憶するログ出力制御装置において、前記内部情報を一時記憶領域に格納する手段と、前記プログラムエラー情報の受信時を基準とした任意の範囲の内部情報を前記一時記憶領域から取得して、前記ログメッセージを生成する手段と、生成したログメッセージを前記記憶装置に記憶する手段とを備えることを特徴とする。
また、前記任意の範囲の内部情報は、前記プログラムエラー情報の受信時に格納された内部情報を基準とした前，後の所定数の内部情報を示すことを特徴とする。
また、前記任意の範囲の内部情報は、前記プログラムエラー情報の受信時を基準とした前，後の所定時間内に格納された内部情報を示すことを特徴とする。
また、本発明のログ出力制御プログラムは、アプリケーションプログラムから出力された内部情報と、プログラムエラー情報とに基づき、ログメッセージを生成して記憶装置に記憶する処理をコンピュータに実行させるログ出力制御プログラムにおいて、前記内部情報を一時記憶領域に格納する処理と、前記プログラムエラー情報の受信時を基準とした任意の範囲に格納された内部情報を前記一時記憶領域から取得して、前記ログメッセージを生成する処理と、生成したログメッセージを前記記憶装置に記憶する処理とを前記コンピュータに実行させることを特徴とする。
また、前記任意の範囲の内部情報は、前記プログラムエラー情報の受信時に格納された内部情報を基準とした前，後の所定数の内部情報を示すことを特徴とする。
また、前記任意の範囲の内部情報は、前記プログラムエラー情報の受信時を基準とした前，後の所定時間内に格納された内部情報を示すことを特徴とする。
【発明の効果】
【０００７】
以上の構成により本発明では、アプリケーションプログラムの障害発生時において、障害発生の原因となった命令の直前と直後の一定数又は一定期間の内部情報のみを詳細ログ情報としてファイル装置に出力することとしたので、アプリケーションプログラム自身のパフォーマンス低下を抑えながら、発生した障害とその障害の判別・解決方法の判断材料となる可能性の高いログ情報を効率良く取得し管理することが可能となる。
【発明を実施するための最良の形態】
【０００８】
以下、本発明の一実施の形態に係るログ情報出力制御装置について、図面に基づき説明する。
図１は、本実施の形態に係るログ情報出力制御装置を備えたコンピュータシステムの概略構成を示すブロック図である。
本実施の形態に係るコンピュータシステムは、ログ情報の出力対象となるアプリケーションプログラム１１０と、ログ出力制御プログラム１２０と、ログ情報の出力先となるログ記憶装置１３０とから構成される。
アプリケーションプログラム１１０は、アプリケーションプログラム１１０自身に定義された命令を順次実行して何らかの処理を行うコンピュータシステム上で動作するプログラムであり、ログ情報出力プログラム１２０に対応する処理手段として、内部情報送信手段１１１と、エラー発生判定手段１１２と、プログラムエラー情報送信手段１１３とを備える。
内部情報送信手段１１１は、アプリケーションプログラム１１０が保持する命令実行時の変数値などの内部情報をログ出力制御プログラム１２０に送信する。
エラー発生判定手段１１２は、アプリケーションプログラム１１０の命令の実行時にプログラムエラーの発生を判定する。
プログラムエラー情報送信手段１１３は、エラー発生判定手段１１２の判定結果に応じて、発生したプログラムエラーの情報をログ出力制御プログラム１２０に送信する。
ログ出力制御プログラム１２０は、内部情報受信手段１２１，詳細ログ情報生成手段１２２，詳細ログ情報格納手段１２３，プログラムエラー情報受信手段１２４，障害ログ情報生成手段１２５,詳細ログ出力要求手段１２６，ログメッセージ生成手段１２７，ログメッセージ出力手段１２８の各処理手段と、一時記憶領域としての詳細ログ情報保持領域１２９とを備える。
内部情報受信手段１２１は、内部情報送信手段１１１から内部情報を受信する。
詳細ログ情報生成手段１２２は、内部情報受信手段１２１の受信した内部情報に基づき詳細ログ情報を生成する。
詳細ログ情報格納手段１２３は、詳細ログ情報生成手段１２２の生成した詳細ログ情報を詳細ログ情報保持領域１２９に格納する。
プログラムエラー情報受信手段１２４は、プログラムエラー情報送信手段１１３から送信されたプログラムエラー情報を受信する。
障害ログ情報生成手段１２５は、プログラムエラー情報受信手段１２４の受信したプログラムエラー情報に基づき障害ログ情報を生成する。
詳細ログ出力手段１２６は、プログラムエラー情報受信手段１２４のプログラムエラー情報の受信に応じて、詳細ログ保持領域１２９に格納された詳細ログ情報を出力する。
ログメッセージ生成手段１２７は、詳細ログ出力手段１２６が詳細ログ情報保持領域１２９から出力した詳細ログ情報と、障害ログ情報生成手段１２５の生成した障害ログ情報とに基づき詳細ログメッセージ及び障害ログメッセージを生成する。
ログメッセージ出力手段１２８は、ログメッセージ生成手段１２７の生成した詳細ログメッセージ及び障害ログメッセージをログ記憶装置１３０に出力する。
本実施の形態では、詳細ログ出力手段１２６により、プログラムエラー情報受信手段１２４によるプログラムエラー情報受信のタイミングの直前及び直後の所定範囲内（一定数又は一定期間）に詳細ログ情報保持領域１２９に格納された詳細ログ情報をログ記憶装置１３０の記憶対象として出力することとしている。
【０００９】
以上の構成に基づき、本実施の形態に係るログ情報出力制御装置の行う処理について説明する。
図２は、アプリケーションプログラム１１０の一例として、Ｊａｖａ（「Ｊａｖａ」は、米国サンマイクロシステムズ社の登録商標である。）で記述した命令群を示す図である。
メソッド２１０は、アプリケーションプログラム１１０に定義された複数の命令で構成されるＪａｖａのメソッドであり、アプリケーションプログラム１１０はメソッド２１０の命令を先頭から順に実行する。
エラー発生判定手段１１２に相当するプログラムエラー判定構造２１１は、try節２１２とcatch節２１３とで構成され、アプリケーションプログラム１１０はtry節２１２内の命令群２１４の実行時にＪａｖａにおけるプログラムエラーとしての例外が発生すると、それ以降の命令群を実行せずにcatch節２１３に制御を移し、catch節２１３内の命令群２１５を実行する。catch節２１３内の命令群２１５では、catch行で定義されたプログラムエラー変数２３０で例外情報にアクセスすることが可能である。
なお、本例では、Ｊａｖａのtry〜catch構文によってエラー判定手段１１１を実現しているが、if構文などのプログラムの一般的な制御構造でも実現可能である。
内部情報送信手段１１１に相当する詳細ログ出力命令２１６、２１７、２１８、２１９は、引数２３１、引数２３２に示すように、アプリケーションプログラム１１０の内部情報として、引数２３１にクラス名を、引数２３２にメッセージをそれぞれ文字列形式で指定して実行することが可能である。また、式２３３に示すように、プログラム中の変数を「＋」文字で連結して引数２３２に指定することも可能である。
エラー発生命令２２０は、プログラムエラーが発生する可能性のある命令であり、引数２３４に数値を構成する文字列（０〜９）以外が指定された場合にプログラムエラーが発生する。
プログラムエラー情報送信手段１１３に相当する障害ログ出力命令２２１は、アプリケーションプログラム１１０の例外情報と内部情報をログ出力制御プログラム１２０に出力する命令であり、詳細ログ出力命令２１６〜２１９と同様に、アプリケーションプログラム１１０の内部情報として、引数にクラス名、メッセージを文字列で指定するとともに、引数２３５に示すように、プログラムエラー変数２３０を引数として指定することで、例外情報を指定して実行することが可能である。
【００１０】
図３は、アプリケーションプログラム１１０の内部情報に基づき詳細ログ情報生成手段１２２の生成した詳細ログ情報のデータ構造の一例を示す図である。
本例に示す詳細ログ情報は、生成時刻３０１，クラス名３０２，メッセージ３０３の各データ項目を有する。
生成時刻３０１は、詳細ログ情報生成手段１２２による生成処理が行われた時刻を示す。
クラス名３０２は、アプリケーションプログラム１１０における詳細ログ情報出力命令が実行されたクラス名を示す文字列である。
メッセージ３０３は、アプリケーションプログラム１１０の内部情報を含んだメッセージを表す文字列である。
【００１１】
図４は、アプリケーションプログラム１１０のプログラムエラー情報に基づき障害ログ情報生成手段１２５が生成した障害ログ情報のデータ構造の一例を示す図である。
本例に示す障害ログ情報は、生成時刻４０１，クラス名４０２，メッセージ４０３，例外情報４０４の各データ項目を有する。
生成時刻４０１は、障害ログ情報生成手段１２５による生成処理が行われた時刻を示す。
クラス名は、アプリケーションプログラム１１０における障害ログ情報出力命令が実行されたクラス名を示す文字列である。
メッセージ４０３は、アプリケーションプログラム１１０の内部情報を含んだメッセージを表す文字列である。
例外情報４０４は、発生した例外情報の詳細を表す。
【００１２】
次に、本実施の形態における詳細ログ情報保持領域１２９の詳細ログ情報の格納処理及び出力処理を図５〜図８のイメージを用いて説明する。
図５は、詳細ログ情報保持領域１２９における詳細ログ情報の格納処理を示すイメージ図である。
詳細ログ情報保持領域１２９は、図５〜８に示すように、配列の先端と末尾をつないで環状にした固定長のデータ構造で構成する。このデータ構造は、一般的にリングバッファと呼ばれる。
図５において、５０１は現在の詳細ログ情報格納位置となる詳細ログ情報要素を指し示す登録ポインタであり、５０２〜５０４は過去の詳細ログ情報格納位置となる詳細ログ情報要素を指し示す登録ポインタである。５０５は、登録ポインタ５０１の移動方向を示す矢印である。
５０６は詳細ログ情報要素に格納された詳細ログ情報を示し、５０７は格納される前の詳細ログ情報を示す。
５０８は詳細ログ情報が格納されていない詳細ログ情報要素を示し、５０９は詳細ログ情報が格納されている詳細ログ情報要素を示す。
本処理では、登録ポインタ５０１は、まず、ログ出力制御プログラム１２０の起動時に登録ポインタ５０３の位置に存在する。詳細ログ情報格納手段１２３は登録ポインタ５０１が指し示す詳細ログ情報要素に詳細ログ情報５０７を格納していく。
次に、登録ポインタ５０１は、詳細ログ情報格納手段１２３による詳細ログ情報５０７の格納に応じて、登録ポインタ５０２〜５０４に示すように、矢印５０５が示す方向に、各詳細ログ情報要素を順に指し示しながら移動していく。
【００１３】
図６は、障害発生時における詳細ログ情報の出力処理を示すイメージ図である。
図６において、６０１は詳細ログ出力手段１２６によって出力要求がされた時点における登録ポインタを示す。
６０２〜６０５は詳細ログ出力手段１２６からの出力要求に応じて生成する出力ポインタであり、６０６は出力ポインタ６０１の移動方向を示す矢印である。
６０７は出力ポインタ６０１が指し示す詳細ログ情報要素に格納されていた詳細ログ情報であり、６０８は出力された詳細ログ情報である。
６０９は詳細ログ出力手段１２６によって出力要求がされた時点における登録ポインタの指し示す詳細ログ情報要素を示す障害発生ポインタであり、６１０は障害発生ポインタの指し示す詳細ログ情報要素に到達した出力ポインタである。
本処理では、詳細ログ出力手段１２６によって出力要求がされた時点で出力ポインタ６０２及び障害発生ポインタ６０９が生成され、矢印６０６に示す方向に各詳細ログ情報要素を順に指し示しながら移動していく。
次に、出力ポインタ６０３〜６０５に示すように、詳細ログ情報６０７が格納されている各詳細ログ情報要素に到達したときに、各詳細ログ情報６０８を順に出力していく。
最後に、出力ポインタ６１０に示すように、登録ポインタ６０１が指し示す各詳細ログ情報要素に到達すると出力処理を終了する。
【００１４】
図７は、障害発生後における詳細ログ情報の格納方法を示すイメージ図である。
図７において、７０１は障害発生時に生成された障害発生ポインタを示し、７０２〜７０４は登録ポインタを示す。７０５は登録ポインタ７０２〜７０４の移動方向を表す矢印を示す。７０６は、障害発生後の詳細ログ情報の出力対象となる詳細ログ情報要素を示す。ここで詳細ログ情報の出力対象となる詳細ログ情報要素７０６は、予め上限値が設定されているものとし、本例では上限値が「４」に設定された場合を示す。
本処理では、登録ポインタ７０２〜７０４に示すように、障害発生ポインタ７０１の指し示す詳細ログ情報要素から順に矢印７０５の方向に、詳細ログ情報要素７０６に詳細ログ情報を格納していく。
【００１５】
図８は、障害発生後における詳細ログ情報の出力方法を示すイメージ図である。
図８において、８０１は障害発生時に生成された障害発生ポインタを示し、８０２は障害発生ポインタ８０１の移動方向を表す矢印を示す。８０３は登録ポインタを示す。８０４は、障害発生後の詳細ログ情報の出力対象となる詳細ログ情報要素を示す。８０５は出力対象となった詳細ログ情報を示す。
本処理では、予め任意に指定された数の詳細ログ情報要素８０４の全てに詳細ログ情報が格納されたときに、矢印８０２に示す方向に登録ポインタ８０３の指し示す詳細ログ情報要素まで障害発生ポインタ８０１を移動していく。この際、障害発生ポインタ８０１移動に伴い、詳細ログ情報要素８０４に格納された詳細ログ情報８０５を順に出力し、登録ポインタ８０３の指し示す詳細ログ情報要素まで到達したときに、障害発生ポインタ８０１を削除する。
【００１６】
以上の各処理の詳細について、図９〜１２のフローチャートを用いて説明する。
図９は、本実施の形態に係るコンピュータシステムが行う基本処理フローを示す図である。
まず、アプリケーションプログラム１１０を起動すると、アプリケーションプログラム１１０に定義された起動命令に応じてログ出力制御プログラム１２０を起動する（ステップ９０１）。
ログ出力制御プログラム１２０の詳細ログ情報格納手段１２３は、詳細ログ情報保持領域１２９における詳細ログ情報格納開始位置を指し示す登録ポインタを生成する（ステップ９０２）。
アプリケーションプログラム１１０は、定義された命令群を先頭から順に読み込んで実行していく（ステップ９０３）。
エラー発生判定手段１１２は、命令の実行に成功したか否かを判定し（ステップ９０４）、成功した場合には、次の命令を読み込む（ステップ９０５）。
読み込んだ命令が詳細ログ出力命令か否かを判定し（ステップ９０６）、詳細ログ出力命令の場合には、内部情報送信手段１１１が詳細ログ出力処理を実行して（ステップ９０７）、次の命令を読み込む（ステップ９０８）。詳細ログ出力処理では、アプリケーションプログラム１１０の内部情報として引数を指定して読み込んだ詳細ログ出力命令を実行し、ログ出力制御プログラム１２０で詳細ログ情報の生成と詳細ログ情報格納領域１２９への格納を実行する。詳細は図１１のフローチャートで後述する。
一方、詳細ログ出力命令でない場合には、アプリケーションプログラム１１０の終了命令に到達したか否かを判定し（ステップ９０９）、到達した場合には処理を終了し、到達していない場合には命令の実行を繰り返す。
ステップ９０４において、ステップ９０３で命令が正しく実行されずにプログラムエラーが発生したと判定した場合には、アプリケーションプログラム１１０の制御をcatch節に移す（ステップ９１０）。ここで、命令の実行の失敗としては、例えば、図２に示すエラー発生命令２２０の引数２３２に数値を構成する文字列以外を指定し、プログラムエラーが発生した場合が対応する。
次に、プログラムエラー情報送信手段１１３が、catch節に定義された障害ログ出力処理を実行した後（ステップ９１１）、次の命令を読み込む（ステップ９０８）。障害ログ出力処理では、catch節に定義された障害ログ出力命令を実行し、障害ログ情報の生成と障害ログメッセージとして出力する処理を実行する。詳細は図１２のフローチャートで後述する。
【００１７】
図１０は、ステップ９０７の詳細ログ出力処理に対応したログ出力制御プログラム１２０の処理の詳細を示すフローチャートである。
まず、アプリケーションプログラム１１０の内部情報送信手段１１１によって送信された内部情報として引数の値を、内部情報受信手段１２１が受信する（ステップ１００１）。
詳細ログ情報保持領域１２９に障害発生ポインタが存在するか否かを判定し（ステップ１００２）、存在しない場合には、内部情報受信手段１２１が受信した内部情報を、詳細ログ情報生成手段１２２に送信し、内部情報から詳細ログ情報を生成する（ステップ１００３）。詳細ログ情報の生成では、現在時刻，引数によって送信されたクラス名及び内部情報を含んだメッセージを各データ項目とする。
次に、詳細ログ情報格納手段１２３が、詳細ログ情報保持領域１２９において、登録ポインタの指し示す詳細ログ情報要素に、詳細ログ情報生成手段１２２の生成した詳細ログ情報を格納し（ステップ１００４）、矢印に示す次の詳細ログ情報要素に登録ポインタを移動させて処理を終了する（ステップ１００５）。
一方、詳細ログ情報保持領域１２９に障害発生ポインタが存在する場合には（ステップ１００２）、詳細ログ情報要素カウンタ値を「１」増加させる（ステップ１００６）。ここで、障害発生ポインタの生成については図１２のフローチャートで説明する。
詳細ログ情報要素カウンタ値と、予め任意に指定された詳細ログ情報要素上限値（詳細ログ出力数）とを比較し（ステップ１００７）、詳細ログ情報要素カウンタ値が詳細ログ情報要素上限値以下であれば、詳細ログ情報の生成，格納を行う（ステップ１００３〜１００５）。
一方、詳細ログ情報要素カウンタ値が詳細ログ情報要素上限値より大きい場合には、詳細ログ出力手段１２６が、障害発生ポインタの指し示す詳細ログ情報要素に格納された詳細ログ情報を出力し、ログメッセージ生成手段１２７が出力された詳細ログ情報を読み込み詳細ログメッセージを生成して、ログメッセージ出力手段１２８がログ記録装置１３０に出力する（ステップ１００８）。
次に、障害発生ポインタが指し示す詳細ログ情報要素に格納された詳細ログ情報を削除し（ステップ１００９）、障害発生ポインタを次の詳細ログ情報要素の位置に設定する（ステップ１０１０）。
障害発生ポインタが登録ポインタの指し示す詳細ログ情報要素に到達したか否かを判定し（ステップ１０１１）、到達した場合には障害発生ポインタを削除して（ステップ１０１２）、障害ログ情報要素カウンタ値を「０」に設定する（ステップ１０１３）。その後、詳細ログ情報の生成，格納を行う（ステップ１００３〜１００５）。
一方、障害発生ポインタが登録ポインタの指し示す詳細ログ情報要素に到達していない場合には、詳細ログ情報の出力等を繰り返す（ステップ１００８〜１０１０）。
【００１８】
図１１は、ステップ９１１の障害ログ出力処理に対応したログ出力制御プログラム１２０の処理の詳細を示すフローチャートである。
まず、アプリケーションプログラム１１０のプログラムエラー情報送信手段１１３によって送信されたプログラムエラー情報としてのクラス名，メッセージ及び例外情報を、プログラムエラー情報受信手段１２４が受信して（ステップ１１０１）、詳細ログ出力手段１２６に通知する（ステップ１１０２）。
詳細ログ出力要求手段１２６は、詳細ログ情報保持領域１２９に出力ポインタを生成し、出力ポインタが指し示す位置を、登録ポインタが指し示す詳細ログ情報要素から一つ進めた位置の要素に設定する（ステップ１１０３）。
次に、出力ポインタが指し示す詳細ログ情報要素に格納された詳細ログ情報が存在するか否かを判定し（ステップ１１０４）、詳細ログ情報が存在しない場合には、出力ポインタが指し示す位置を次の詳細ログ情報要素に進めて（ステップ１１０５）、出力ポインタが登録ポインタの指し示す詳細ログ情報要素に到達したか否かを判定する（ステップ１１０６）。判定の結果、登録ポインタの指し示す詳細ログ情報要素に到達していない場合には、格納された詳細ログ情報が存在するか否かの判定を行う（ステップ１１０４）。
一方、ステップ１１０４において、詳細ログ情報要素に詳細ログ情報が存在する場合には、出力ポインタが指し示す詳細ログ情報要素に格納された詳細ログ情報を出力し、ログメッセージ生成手段１２７が出力された詳細ログ情報を読み込み、詳細ログメッセージを生成してログ記録装置１３０に出力する（ステップ１１０７）。
次に、出力ポインタが指し示す詳細ログ情報要素に格納された詳細ログ情報を削除し（ステップ１１０８）、出力ポインタを次の詳細ログ情報要素の位置に設定する（ステップ１１０９）。
出力ポインタが登録ポインタの指し示す詳細ログ情報要素に到達したか否かを判定し（ステップ１１１０）、到達した場合には障害発生ポインタを生成して、登録ポインタが指し示す詳細ログ情報要素の位置に設定し（ステップ１１１１）、障害ログ情報要素カウンタ値を「０」に設定する（ステップ１１１２）。
一方、障害発生ポインタが登録ポインタの指し示す詳細ログ情報要素に到達していない場合には、詳細ログ情報の出力等を繰り返す（ステップ１１０７〜１１０９）。
次に、障害ログ情報生成手段１２５は、プログラムエラー情報受信手段１２４の受信したプログラムエラー情報から障害ログ情報を生成する（ステップ１１１３）。ここで、障害ログ情報は、現在時刻と、障害ログ出力命令の引数として送信されたクラス名，メッセージ及び例外情報から取得した例外のメソッド呼び出しスタックの情報（Ｊａｖａではスタックトレースと呼ばれる。）とで生成する。
ログメッセージ生成手段１２７は、障害ログ情報生成手段１２５が生成した障害ログ情報を読み込み、障害ログメッセージを生成してログ記録装置１３０に出力して処理を終了する（ステップ１１１４）。
【００１９】
図１２は、図９〜１１に示す処理の結果、ログ記録装置に出力された詳細ログメッセージ及び障害ログメッセージを記録したログファイルの一例を示す図である。
ログファイルの記録された各ログメッセージは、時刻１２０１，ログ種別１２０２，クラス名１２０３，ログメッセージ１２０４のデータを有する。
詳細ログメッセージ１２０５は、図３に示す詳細ログ情報を構成する生成時刻３０１と、ログ種別を示す［ＤＥＢＵＧ］という文字列と、クラス名３０２と、メッセージ３０３とを「，」で連結して生成する。詳細ログメッセージ１２０５は、詳細ログ出力命令の実行によって生成された詳細ログ情報が詳細ログメッセージとして出力されたことを表し、エラー発生命令の実行直前のアプリケーションプログラム１１０の内部情報が出力されていることを示している。詳細ログメッセージ群１２０８は、エラー発生命令の実行直前までに詳細ログ情報保持領域１２９に格納された（詳細ログ情報要素数−１）個の詳細ログ情報が、詳細ログメッセージとして出力されたことを表す。
障害ログメッセージ１２０６は、図４に示す障害ログ情報を構成する生成時刻４０１と、ログ種別を示す［ＥＲＲＯＲ］という文字列と、クラス名４０２と、メッセージ４０３とを「，」で連結し、さらに改行して、例外情報４０４を付加して生成する。障害ログメッセージ１２０６は、障害ログ出力命令の実行によって出力された障害ログメッセージを表し、エラー発生命令の実行に失敗して、catch節に制御が移ったことを示している。障害ログメッセージ１２０６に含まれる例外メッセージ１２０７は、障害ログ情報に含まれる例外情報４０４に対応する。
詳細ログメッセージ１２０９は、詳細ログ出力命令の実行によって生成された詳細ログ情報が詳細ログメッセージとして出力されたことを表し、障害発生後の命令が正しく実行されていることを示している。障害発生後詳細ログメッセージ群１２１０は、障害ログメッセージ１２０６出力後、すなわちエラー発生命令の実行失敗後に、詳細ログ情報保持領域１２９に格納された（詳細ログ情報要素上限値）個の詳細ログ情報が、詳細ログメッセージとして出力されたことを表す。
ログメッセージ群１２１１は、障害ログメッセージ１２０７が示す障害とは別の障害が発生して、詳細ログメッセージと障害ログメッセージが出力されたことを表す。この場合、障害ログメッセージ１２０７が示す時刻"2005-02-23 17:49:43"に障害発生後、障害ログメッセージ１２１２が示す時刻"2005-02-23 18:59:02"まで障害が発生していないことを示す。
【００２０】
以上の処理により、本実施の形態に係るログ出力制御装置では、障害発生時を基準とした一定範囲の詳細ログメッセージのみがログ記憶装置に記録されるため、ログ記憶装置に対して効率良くログメッセージを記憶させることが可能となる。
なお、本発明のログ出力制御装置における詳細ログ情報保持領域に格納された詳細ログ情報の出力形態としては、前記実施の形態に示すように、障害発生の前後の一定数の詳細ログを出力するものに限らず、例えば、障害発生の前後の一定期間の詳細ログ情報を出力することとしてもよい。
以下、本発明の第２実施の形態に係るログ出力制御装置として、障害発生の前後の一定期間の詳細ログ情報を出力する形態について説明する。
【００２１】
図１３は、第２実施の形態に係るログ出力制御装置の詳細ログ情報保持領域１２９における詳細ログ情報格納処理を示すイメージ図である。
本実施の形態では、詳細ログ情報保持領域１２９を、配列の先端と末尾をつないで環状にした固定長のデータ構造で構成し、秒単位でバッファを利用している。
図１３において、各詳細ログ情報要素１３０１には、１つの時刻情報を格納することができる。この時刻情報を詳細ログ情報時刻と呼ぶ。
詳細ログ情報リスト１３０２は、複数の詳細ログ情報を格納することができる可変長の配列で、リスト先頭からの詳細ログ情報の読み出しと、リストの末尾への詳細ログ情報の追加が可能なデータ構造を表す。線分１３０３は、詳細ログ情報要素１３０１が一つの詳細ログ情報リスト１３０２を保持していることを表している。
登録ポインタ１３０４は現在の詳細ログ情報格納位置となる詳細ログ情報要素を指し示し、登録ポインタ１３０５〜１３０７は過去の詳細ログ情報格納位置となる詳細ログ情報要素を指し示している。矢印１３０８は、登録ポインタの移動方向を示している。
詳細ログ情報１３０９は詳細ログ情報要素に格納されたものを示し、詳細ログ情報１３１０は詳細ログ情報要素に新たに格納されるものを示す。
本実施の形態では、登録ポインタ１３０４は、まず、ログ出力制御プログラム１２０の起動時には登録ポインタ１３０５の位置に存在する。次に、登録ポインタ１３０４は、詳細ログ情報格納手段１２３によって詳細ログ情報時刻が１秒ずつ加算される毎（１秒経過毎）に、登録ポインタ１３０５〜１３０７に示すように、矢印１３０８が示す方向に、各詳細ログ情報要素を順に指し示しながら移動していく。
詳細ログ情報１３１０は、登録ポインタ１３０４が指し示す詳細ログ情報要素が保持する詳細ログ情報リストの末尾に格納される。
【００２２】
以上の構成に基づき、本発明の第２実施の形態に係るログ出力制御装置の行う各処理についてフローチャートを用いて説明する。
本実施の形態に係るコンピュータシステムが行う基本処理は、図９のフローチャートに示す処理と略同様であるが、ステップ９０２の処理に加えて、現在時刻を取得し、取得した現在時刻を詳細ログ情報時刻として、登録ポインタの指し示す位置の詳細ログ情報要素に格納する処理を行う。なお、本実施例で扱う時刻の最小単位は秒とする。
【００２３】
図１４は、図９のステップ９０７の詳細ログ出力処理に対応したログ出力制御プログラム１２０の処理の詳細を示すフローチャートである。
まず、アプリケーションプログラム１１０の内部情報送信手段１１１によって送信された内部情報として引数の値を、内部情報受信手段１２１が受信するとともに（ステップ１４０１）、現在時刻を取得する（ステップ１４０２）。
取得した現在時刻と、登録ポインタの指し示す詳細ログ情報要素の詳細ログ情報時刻とを比較し、両時刻が一致するか否かを判定する（ステップ１４０３）。
判定の結果、両時刻が一致する場合には、内部情報受信手段１２１が受信した内部情報を、詳細ログ情報生成手段１２２に送信し、内部情報から詳細ログ情報を生成する（ステップ１４０４）。
次に、詳細ログ情報格納手段１２３が、詳細ログ情報保持領域１２９において、登録ポインタの指し示す詳細ログ情報要素の詳細ログ情報リストの末尾に、詳細ログ情報生成手段１２２の生成した詳細ログ情報を格納して処理を終了する（ステップ１４０５）。
一方、ステップ１４０３において、両時刻が不一致の場合には、登録ポインタの指し示す詳細ログ情報要素の詳細ログ情報時刻を取得して、当該時刻に１秒加算し、次詳細ログ情報時刻を生成する（ステップ１４０６）。
次に、登録ポインタを次の詳細ログ情報要素に設定し（ステップ１４０７）、当該詳細ログ情報要素に、ステップ１４０６で生成した次詳細ログ情報時刻を設定するとともに（ステップ１４０８）、詳細ログ情報リストを空にする（ステップ１４０９）。
次に、詳細ログ情報保持領域１２９に障害発生ポインタが存在するか否かを判定し（ステップ１４１０）、障害発生ポインタが存在する場合には、詳細ログ情報要素カウンタ値を「１」増加させる（ステップ１４１１）。
詳細ログ情報要素カウンタ値と、予め任意に指定された詳細ログ情報要素上限値とを比較し（ステップ１４１２）、詳細ログ情報要素カウンタ値が詳細ログ情報要素上限値より大きい場合には、後述する詳細ログメッセージ出力処理を行う（ステップ１４１３）。
一方、ステップ１４１０で障害発生ポインタが存在すると判定した場合、ステップ１４１２で詳細ログ情報要素カウンタ値が詳細ログ情報要素上限値以下と判定した場合、または、ステップ１４１３で詳細ログメッセージ出力処理を行った後には、現在時刻と、登録ポインタの指し示す詳細ログ情報要素の詳細ログ情報時刻とを比較し、両時刻が一致するか否かを判定し（ステップ１４１４）、一致する場合には、詳細ログ情報の生成及び格納を行う（１４０４，１４０５）。一方、不一致の場合には、ステップ１４０６以降の処理を繰り返す。
【００２４】
図１５は、ステップ１４１３に示す詳細ログメッセージ出力処理の詳細を示すフローチャートである。
本処理では、まず、障害発生ポインタが指し示す詳細ログ情報要素の詳細ログ情報リストが空では無いか否かを判定し（ステップ１５０１）、空でない場合には、詳細ログ情報リストに格納された詳細ログ情報を出力し、ログメッセージ生成手段１２７が出力された詳細ログ情報を読み込み、詳細ログメッセージを生成してログ記録装置に出力する（ステップ１５０２）。
次に、障害発生ポインタが指し示す詳細ログ情報要素の詳細ログ情報リストを空にし（ステップ１５０３）、障害発生ポインタを次の詳細ログ情報要素の位置に設定する（ステップ１５０４）。
障害発生ポインタが登録ポインタの指し示す詳細ログ情報要素に到達したか否かを判定し（ステップ１５０５）、到達した場合には障害発生ポインタを削除して（ステップ１５０６）、詳細ログ情報要素カウンタ値を初期値の「１」に設定して処理を終了する（ステップ１５０７）。
一方、ステップ１５０５で、到達していない場合には、ステップ１５０１に戻り、処理を繰り返す。
【００２５】
図１６は、図９のステップ９１１の障害ログ出力処理に対応したログ出力制御プログラム１２０の処理の詳細を示すフローチャートである。
まず、アプリケーションプログラム１１０のプログラムエラー情報送信手段１１３によって送信されたプログラムエラー情報としてのクラス名，メッセージ及び例外情報である引数の値を、プログラムエラー情報受信手段１２４が受信して（ステップ１６０１）、詳細ログ出力手段１２６に通知する（ステップ１６０２）。
詳細ログ出力要求手段１２６は、詳細ログ情報保持領域１２９に出力ポインタを生成し、出力ポインタが指し示す位置を、登録ポインタが指し示す詳細ログ情報要素から一つ進めた位置の要素に設定する（ステップ１６０３）。
次に、出力ポインタが指し示す詳細ログ情報要素の詳細ログ情報リストに格納された詳細ログ情報が存在するか否かを判定し（ステップ１６０４）、詳細ログ情報が存在しない場合には、出力ポインタが指し示す位置を次の詳細ログ情報要素に進めて（ステップ１６０５）、出力ポインタが登録ポインタの指し示す詳細ログ情報要素に到達したか否かを判定する（ステップ１６０６）。判定の結果、登録ポインタの指し示す詳細ログ情報要素に到達していない場合には、格納された詳細ログ情報が存在するか否かの判定を行う（ステップ１６０４）。
一方、ステップ１６０４において、詳細ログ情報要素の詳細ログ情報リストに格納された詳細ログ情報が存在する場合には、出力ポインタが指し示す詳細ログ情報要素の詳細ログ情報リストに格納された詳細ログ情報を出力し、ログメッセージ生成手段１２７が出力された詳細ログ情報を読み込み、詳細ログメッセージを生成してログ記録装置１３０に出力する（ステップ１６０７）。
次に、出力ポインタが指し示す詳細ログ情報要素の詳細ログ情報リストに格納された詳細ログ情報を削除し（ステップ１６０８）、出力ポインタを次の詳細ログ情報要素の位置に設定する（ステップ１６０９）。
出力ポインタが登録ポインタの指し示す詳細ログ情報要素に到達したか否かを判定し（ステップ１６１０）、到達した場合には障害発生ポインタを生成して、登録ポインタが指し示す詳細ログ情報要素の位置に設定し（ステップ１６１１）、障害ログ情報要素カウンタ値を「１」に設定する（ステップ１６１２）。
次に、障害ログ情報生成手段１２５は、プログラムエラー情報受信手段１２４の受信したプログラムエラー情報から障害ログ情報を生成する（ステップ１６１３）。
ログメッセージ生成手段１２７は、障害ログ情報生成手段１２５が生成した障害ログ情報を読み込み、障害ログメッセージを生成してログ記録装置１３０に出力して処理を終了する（ステップ１６１４）。
一方、出力ポインタが登録ポインタの指し示す詳細ログ情報要素に到達していない場合には、詳細ログ情報の出力等を繰り返す（ステップ１６０７〜１６０９）。
【００２６】
以上の処理により、本実施の形態に係るログ出力制御装置によっても、前記第１実施の形態に係るログ出力制御装置と同様に、障害発生時を基準とした一定範囲の詳細ログメッセージのみがログ記憶装置に記録されるため、ログ記憶装置に対して効率良くログメッセージを記憶させることが可能となる。
なお、本実施の形態に係るログ出力制御装置の詳細ログ情報保持領域の要素数，詳細ログ情報要素上限値は、本発明を適用するコンピュータシステムの性能等を考慮して、適宜決定するのが望ましい。
【図面の簡単な説明】
【００２７】
【図１】本発明の一実施の形態に係るログ出力制御装置を構成するコンピュータシステムの概略構成を示すブロック図である。
【図２】コンピュータシステムを構成するアプリケーションプログラムのソースコードの一例を示す図である。
【図３】詳細ログ情報のデータ構造の一例を示す図である。
【図４】障害ログ情報のデータ構造の一例を示す図である。
【図５】本発明の第１実施の形態に係る詳細ログ情報保持領域への詳細ログ情報の格納処理を示すイメージ図である。
【図６】障害発生時における本発明の第１実施の形態に係る詳細ログ情報保持領域からの詳細ログ情報の出力処理を示すイメージ図である。
【図７】障害発生後における本発明の第１実施の形態に係る詳細ログ情報保持領域への詳細ログ情報の格納処理を示すイメージ図である。
【図８】障害発生後における本発明の第１実施の形態に係る詳細ログ情報保持領域からの詳細ログ情報の出力処理を示すイメージ図である。
【図９】本発明の第１実施の形態に係るコンピュータシステムの行う基本処理を示すフローチャートである。
【図１０】詳細ログ出力処理に対応したログ出力制御プログラムの処理の詳細を示すフローチャートである。
【図１１】障害ログ出力処理に対応したログ出力制御プログラムの処理の詳細を示すフローチャートである。
【図１２】ログ記憶装置に記録されるログファイルのデータ構造の一例を示す図である。
【図１３】本発明の第２実施の形態に係る詳細ログ情報保持領域への詳細ログ情報の格納処理を示すイメージ図である。
【図１４】本発明の第２実施の形態に係る詳細ログ出力処理に対応したログ出力制御プログラムの処理の詳細を示すフローチャートである。
【図１５】詳細ログメッセージ出力処理の詳細を示すフローチャートである。
【図１６】本発明の第２実施の形態に係る障害ログ出力処理に対応したログ出力制御プログラムの処理の詳細を示すフローチャートである。
【符号の説明】
【００２８】
１１０  アプリケーションプログラム、１１１  内部情報送信手段、１１２  エラー情報判定手段、１１３  プログラムエラー情報送信手段、１２０  ログ出力制御プログラム、１２１  内部情報受信手段、１２２  詳細ログ情報生成手段、１２３  詳細ログ情報格納手段、１２４  プログラムエラー情報受信手段、１２５  障害ログ情報生成手段、１２６  詳細ログ出力要求手段、１２７  ログメッセージ生成手段、１２８  ログメッセージ出力手段、１２９  詳細ログ情報保持領域、１３０  ログ記憶装置。
【図１】
2007058265.tif 000003
【図２】
2007058265.tif 000004
【図３】
2007058265.tif 000005
【図４】
2007058265.tif 000006
【図５】
2007058265.tif 000007
【図６】
2007058265.tif 000008
【図７】
2007058265.tif 000009
【図８】
2007058265.tif 000010
【図９】
2007058265.tif 000011
【図１０】
2007058265.tif 000012
【図１１】
2007058265.tif 000013
【図１２】
2007058265.tif 000014
【図１３】
2007058265.tif 000015
【図１４】
2007058265.tif 000016
【図１５】
2007058265.tif 000017
【図１６】
2007058265.tif 000018