(57)【要約】【課題】ログファイルの容量を抑制しつつも、異常発生時には自動的にログ出力レベルを変更し、異常状態発生直後あるいは直前からの詳細な情報を取得できるようにしたロギング装置を提供するものである。【解決手段】アプリケーションプログラムの実行中のチェックポイントのデータをリアルタイムにロギングするロギング装置において、上記アプリケーションプログラム中には、予め外部から設定されるログ出力条件と、各チェックポイントにおいて呼び出される複数のログ出力関数とが組み込まれ、通常時はログ出力関数のパラメータで指定されたエラーレベルが通常時ログ出力条件に合致する場合のみログ出力され、トリガーレベルに合致するエラーレベルが発生した場合には、異常時ログ出力レベルに合致したエラーレベルの詳細ログが出力されるようにしたものである。【選択図】図１
2009205488.tif 000002
【特許請求の範囲】
【請求項１】
アプリケーションプログラムの実行中のチェックポイントのデータをリアルタイムにロギングするロギング装置において、上記アプリケーションプログラム中には、予め外部から設定され少なくとも通常時ログ出力レベル、異常時ログ出力レベル、及びトリガーレベルを含むログ出力条件と、各チェックポイントにおいて呼び出され少なくともエラーレベルを含むパラメータを指定できる複数のログ出力関数とが組み込まれ、通常時はログ出力関数のパラメータで指定されたエラーレベルが上記通常時ログ出力レベルに合致する場合のみログ出力され、上記トリガーレベルに合致する上記エラーレベルが発生した場合には、上記異常時ログ出力レベルに合致したエラーレベルの詳細ログが出力されるようにしたことを特徴とするロギング装置。
【請求項２】
上記ログ出力条件には上記通常時ログ出力レベル、異常時ログ出力レベル、及びトリガーレベルの他に異常状態フラグ、異常時ログ出力期間、異常状態開始時刻を含んだことを特徴とする請求項１に記載のロギング装置。
【請求項３】
上記通常時ログ出力レベルとは通常状態におけるログ出力条件となるエラーレベルであり、トリガーレベルとは異常状態と判定するログ出力レベルであり、異常時ログ出力レベルとはトリガーレベル検出により異常状態と判定した時に出力するログ出力レベルであることを特徴とする請求項１に記載のロギング装置。
【請求項４】
上記トリガーレベルに合致するエラーレベルが発生した場合に、異常状態フラグがONになり、異常状態開始時刻に現在時刻が設定されてログ出力が実施され、異常状態フラグがONであり、かつ、上記エラーレベルが異常状態ログ出力レベルに合致すると、異常発生時の詳細ログ出力を自動的に行うようにしたことを特徴とする請求項１あるいは２に記載のロギング装置。
【請求項５】
上記トリガーレベルに合致するエラーレベルが発生した場合に、所定の保存期間だけログキャッシュへログを保存し、異常時ログ出力レベルに合致したエラーレベルのログ出力がなされると共にログキャッシュから異常発生前のログを遡って出力するように構成されていることを特徴とする請求項１に記載のロギング装置。
【請求項６】
上記トリガーレベルに合致するエラーレベルが発生した場合に、異常事象単位で別々のログファイルに保存することを特徴とする請求項１あるいは５に記載のロギング装置。
【請求項７】
データ記憶領域に記憶されたログ出力条件と、処理手順記憶領域に記憶された各チェックポイントにおいて呼び出される複数のログ出力関数とを内包し、通常時は上記ログ出力関数で指定されたログ出力レベルに合致したログのみを出力し、異常発生時には異常時ログ出力レベルに合致したエラーレベルの詳細ログが出力されるように自動的にログ出力レベルを変更するプログラムを記録したコンピュータ読取可能な記録媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、アプリケーションプログラムの実行中のチェックポイントのデータをリアルタイムにロギングするロギング装置および記録媒体に関するものである。
【背景技術】
【０００２】
アプリケーションプログラム中にロギング関数を組み込み、パラメータで区分あるいは区分と採取条件を必要に応じて設定し、必要なデータのみをメモリに保存し、検索時に区分あるいは区分と検索条件を指定して必要なデータのみを整理して出力するように構成し、オンラインで動作するアプリケーションプログラムのチェックポイントのデータのうち必要なデータのみを採取すると共に、必要なデータのみを検索して出力するようにしたロギング装置が既に提案されている（例えば特許文献１を参照）。
【０００３】
上記特許文献１に示すアプリケーションは、各種業務処理（例えば商品の購入サービス等のオンライン業務処理）を行うアプリケーションプログラムであって、パラメータに従ってチェックポイントのデータをロギングするロギング関数を組み込んだものである。ロギング関数は、アプリケーション中に組み込まれ、チェックポイントのデータがパラメータで指定された区分およびロギング条件に合致するときに出力し、合致しないときに出力しないようにするものである。
【０００４】
【特許文献１】特開２００１−３１８８０９号公報
【発明の開示】
【発明が解決しようとする課題】
【０００５】
ところが、上述した従来のロギング装置は、ログ出力関数を呼び出す際にエラーレベルを１つだけ指定し、指定されたエラーレベルが予め定められたログ出力レベル以上の場合にのみログ出力するように処理していた。従って、ログ出力するかどうかの判定条件は１つしか与えられず、ログ出力レベルの切り替えは設定変更画面から作業者がその都度手作業で行わなければならなかった。従って、システムの異常発生時には、異常状態が発生してから、調査担当者が現場に到着してログ出力レベルを概略ログから詳細ログに切り替えるため、異常状態発生から上記切り替えまでの間の詳細ログを取得することができなかった。また、常時、詳細ログを出力するとなると、ログファイルサイズが膨大になるという問題があった。本発明は上記のような課題を解決するためになされたもので、ログファイルの容量を抑制しつつも、異常発生時には自動的にログ出力レベルを変更し、異常状態発生直後あるいは直前からの詳細な情報を取得できるようにしたロギング装置を提供するものである。
【課題を解決するための手段】
【０００６】
アプリケーションプログラムの実行中のチェックポイントのデータをリアルタイムにロギングするロギング装置において、上記アプリケーションプログラム中には、予め外部から設定されるログ出力条件と、各チェックポイントにおいて呼び出される複数のログ出力関数とが組み込まれ、通常時はログ出力関数のパラメータで指定されたエラーレベルが通常時ログ出力条件に合致する場合のみログ出力され、トリガーレベルに合致するエラーレベルが発生した場合には、異常時ログ出力レベルに合致したエラーレベルの詳細ログが出力されるようにしたものである。
【発明の効果】
【０００７】
この発明によれば、アプリケーションプログラムの実行中のチェックポイントのデータをリアルタイムにロギングする際、通常時はログ出力をキャッシュに一時保管し、異常発生時には自動的にログ出力レベルを切り替えて現在の異常時ログを出力したり、直前の一時保管ログを出力すると共に現在の異常時ログを出力するようにしたので、ログファイルの容量を抑制しながら、異常状態発生直後あるいは直前からの詳細な情報を取得できるようになる効果を有する。
【発明を実施するための最良の形態】
【０００８】
実施の形態１.
図１はこの発明の実施の形態１のロギング装置におけるシステム構成図を示している。図１において、１は電子計算機システムに組み込まれたアプリケーションで、データ記憶領域に記憶されたログ出力条件１０１と、処理手順記憶領域に記憶された各チェックポイントにおいて呼び出される複数のログ出力関数１０２とを内包している。２は上記アプリケーション１のログ出力条件１０１を外部から設定する設定変更画面、３は上記ログ出力関数１０２から出力されたログデータを一時保管するログファイル、３１は上記ログファイルに出力されるログデータの具体的内容、１１はログ出力条件１０１の内容、１２は上記ログ出力関数１０２にて指定するパラメータの内容である。
【０００９】
図２はこの発明の実施の形態１のロギング装置におけるログ出力関数の処理の流れを示すフローチャート、図３は図２のログ出力関数を用いたアプリケーションの処理の例を示している。図１に示すログ出力条件１１にある通常時ログ出力レベルとは、通常状態におけるログ出力条件となるエラーレベルを示す。エラーレベルとは、ログの重要度、詳細度を示すレベルであり、たとえば、debug、info、warning、error、fatalなどが考えられる。本発明ではログ出力関数のパラメータで指定されたエラーレベルと、ログ出力条件の中のエラーレベルと比較する必要があるため、例えば８ビットデータで数値化し、debug<info<warning<error<fatalの順に大きくなる数値を定義しておくことにより、値の大小関係により条件の合致かどうかを判定できるようにする。
【００１０】
debugとはこの場合、アプリケーションの処理状況を逐一示す詳細なトレースログであり、infoとは大まかな処理状況を示す概略ログ、warningはアプリケーションの処理に軽度の問題が発生したが当該処理を続行できるレベル、errorは当該処理の続行が不可であるためスキップするが、他の処理を続行できる中程度の故障状態、fatalはアプリケーションの処理が続行不可能となる重程度の故障状態を示す。
【００１１】
トリガーレベルとは、異常状態と判定するログ出力レベルを示す。異常時ログ出力レベルとは、トリガーレベル検出により異常状態と判定した時に出力するログ出力レベルを示す。異常状態フラグとは、異常状態を持続中であることを示すフラグである。異常時ログ出力期間とは、異常状態を継続する期間を示す。異常状態開始時刻とは、異常状態を検出して異常状態フラグを立てた時刻を示す。
【００１２】
また、ログ出力関数１０２におけるパラメータ１２において、チェックポイントIDとは、アプリケーションの処理の流れにおけるログ出力関数の呼び出し場所を一意に示す記号または番号であり、ログ出力関数の通番、アプリケーション処理の行数などが考えられる。エラーレベルとは、当該ログ出力関数にて出力する情報の重要度、詳細度を示すものであり、上記ログ出力条件１１と同じエラーレベル（debug、info、warning、error、fatal）などが考えられる。上記エラーレベルがログ出力条件１１にある通常時ログ出力レベルの条件に合う場合のみログファイル３にログが出力され、そこで一時保管されるものである。ログメッセージはログ出力したい情報の内容である。
【００１３】
また、ログファイル３に出力されるログ出力内容３１において、ログ出力日時とは、ログを出力した日付、時間を示す。ログ出力元アプリケーション名とは、当該ログを出力したアプリケーション名であり、ログ出力関数内部で付加される情報である。チェックポイントIDとは、ログ出力関数のパラメータ１２にて渡されるチェックポイントIDである。エラーレベルとは、ログ出力関数のパラメータ１２にて渡されるエラーレベルであり、たとえば、debug、info、warning、error、fatalなどが考えられる。ログメッセージとは、ログ出力関数のパラメータ１２にて渡されるログメッセージである。図４（a）にログ出力関数の呼び出し例を示しており、ＩＤ０１０はチェックポイントＩＤ名、infoはエラーレベル、“通信ソケットオープン”はログメッセージの例である。また、図４(b)にログ出力内容の例を示しており、ログ出力日時、ログ出力元アプリケーション名（com01）、チェックポイントＩＤ名、エラーレベル、ログメッセージの順に示している。
【００１４】
以下、図１〜図４を用いて、本発明のロギング装置の動作について説明する。アプリケーション１の実行時、予め、ログ出力条件設定画面２から、ログ出力条件１１を設定しておく。この実施形態では図３のログ出力条件として示しているように、通常時ログ出力レベルにinfo、トリガーレベルにerror、異常時ログ出力レベルにdebug、異常時ログ出力期間に10分を指定した例を示している。アプリケーションプログラムの実行を開始すると、先ず図３のチェックポイント１でログ出力関数（１）がエラーレベル＝debugで呼び出される。この時のログ出力関数の動作を図２のフローチャートで説明する。
【００１５】
図２のステップST1において、ログ出力関数のパラメータ１２からエラーレベル(debug)を取得し、ステップST2に進む。ステップST2では、アプリケーション１のデータ記憶領域１０１からログ出力条件１１を読み込みステップST3に進む。ステップST３では、ログ出力条件１１の異常状態フラグがONかどうか判定し、ONの場合は、ステップST4へ進み、OFFの場合はステップST7に進む。ステップST4では、現在時刻が、ログ出力条件１１の中の異常状態開始時刻＋異常時ログ出力期間以降であるかどうかを判定し、現在時刻が、ログ出力条件１１の中の異常状態開始時刻＋異常時ログ出力期間より小さいとき、すなわち異常時ログを出力する期間中であると判定した場合はステップST6に進み、異常時ログを出力する期間を終えたと判定した場合には、ステップST5に進む。
【００１６】
ステップST6では、ログ出力関数のパラメータで指定されたエラーレベルが異常時ログ出力レベル以上であるかどうかを判定し、判定条件に合致した場合にはステップST11に進み、合致しなかった場合にはステップST15に進みログ出力関数を終了する。ステップST11では、ログ出力関数のパラメータ１２からチェックポイントID、ログメッセージを取得し、ステップST12に進む。ステップST12では現在日時、アプリケーション名を取得し、ステップST13に進む。ステップST13では、ログ内容を生成しステップST14に進む。ステップST14ではログメッセージをログファイル３に出力し、ステップST15に進みログ出力関数の動作を終了する。
【００１７】
ステップST5では、ログ出力条件１１の異常状態フラグにOFFを設定し、ステップST7に進む。ステップST７では、ログ出力関数のパラメータ１２から取得したエラーレベルが、ログ出力条件１１のトリガーレベルに合致するかどうかを判定し、合致する場合にはステップST8に進み、合致しない場合には、ステップST10に進む。ステップST8では、異常状態フラグにONを設定し、ステップST9に進む。ステップST9では、ログ出力条件１１の異常状態開始時刻に現在時刻を設定し、ステップST11に進む。ステップST10では、エラーレベルが通常時ログ出力レベルに合致するかどうかを判定し、合致する場合にはステップST11に進み、合致しない場合は、ステップST15に進みログ出力関数の処理を終了する。
【００１８】
図３のチェックポイント１では、ログ出力関数（１）がエラーレベル=debugで呼び出されているため、図２のフローチャートでは、ステップST1→ステップST2→ステップST3（異常状態フラグがOFF）→ステップST7（エラーレベルがdebug、トリガーレベルがerrorのためNoとなる）→ステップST10（エラーレベルがdebug、通常時ログ出力レベルがinfoのためNoとなる）→ステップST15の順で処理が進み、異常状態フラグがOFFであり、かつ、エラーレベルdebugが、通常時ログ出力条件infoやトリガーレベルerrorに合致しないため、ログ出力は行われない。
【００１９】
図３のチェックポイント２では、ログ出力関数（２）がエラーレベル＝infoで呼び出されているため、図２のフローチャートでは、ステップST1→ステップST2→ステップST3→ステップST7（エラーレベルがinfo、トリガーレベルがerrorのためNoとなる）→ステップST10（エラーレベルがinfo、通常時ログ出力レベルがinfoのためYesとなる）→ステップST11→ステップST12→ステップST13→ステップST14 →ステップST15の順に処理が進み、エラーレベルinfoが通常時ログ出力条件infoに合致するため、ログ出力が行われ、ログファイル３に保管される。
【００２０】
図３のチェックポイント３では、ログ出力関数（３）がエラーレベル=errorで呼び出されているため、図２のフローチャートでは、ステップST1→ステップST2→ステップST3→ステップST7（エラーレベルerror、トリガーレベルerrorのためYes）→ステップST8→ステップST9→ステップST11→ステップST12→ステップST13→ステップST14→ステップST15の順に処理が進み、エラーレベルerrorがトリガーレベルに合致するため、異常状態フラグがONになって(ステップST8)、異常状態開始時刻に現在時刻が設定され（ステップST9）、ログ出力が実施される。
【００２１】
次に、図３のチェックポイント４では、ログ出力関数（４）がエラーレベル＝debugで呼び出されている。通常時であれば、debugは、通常時ログ出力でレベルinfoの条件に合致しないためにログ出力がなされないが、異常状態フラグがONであり、かつ、異常状態ログ出力レベル(debug)に合致することから、異常発生時の詳細ログ出力を自動的に行う処理が動作し、ログ出力が行われる。すなわち、図２のフローチャートでは、ステップST1→ステップST2→ステップST3（異常状態フラグON）→ステップST4（異常時ログを出力する期間中）→ステップST6（エラーレベルdebug、異常時ログdebugのためYes）→ステップST11→ステップST12→ステップST13→ステップST14→ステップST15の順に処理が進む。
【００２２】
図３のチェックポイントNまでログ出力条件１１の異常時ログ出力期間が持続する場合は、チェックポイント３からチェックポイントNまではエラーレベルdebug以上のログが異常時ログ出力条件に合致するため詳細ログが出力される。チェックポイントNとチェックポイントN+1の間に異常時ログ出力期間が終了すると、すなわち、チェックポイントN+1での時刻が異常状態開始時刻＋異常時ログ出力期間以降であった場合、図２のフローチャートでは、ステップST1→ステップST2→ステップST3→ステップST4→ステップST5→ステップST7(エラーレベルdebug、トリガーレベルerrorであるためNo)→ステップST10(エラーレベルdebug、通常時ログ出力レベルinfoであるためNo)→ステップST15の順に処理が進むため、異常状態フラグはOFFに設定され、ログ出力も行われない。図３のチェックポイントN+2では、エラーレベル=infoは通常時のログ出力条件に合致するため、チェックポイント２と同じくログ出力が行われる。
【００２３】
以上説明したように、この実施の形態１によれば、通常時はパラメータで指定されたエラーログが通常時ログ出力条件に合致する場合のみログ出力されるため、通常時におけるログ出力の量は少ない。また、トリガーレベルに合致するエラーレベルが発生した場合には、異常時ログ出力レベルに合致したエラーレベルのログが出力され、自動的により詳細なログを出力するようになる。すなわち、通常時は、ログ出力量を抑えてログファイルの容量を抑制し、異常発生時には詳細なログを出力するように自動的に切り換えるため、異常発生直後から詳細なログ出力を得られるようになり、ソフトウエアの保守性が飛躍的に向上するものである。
【００２４】
実施の形態２.
実施の形態１では、異常発生直後から詳細なログを取れるようにしたが、異常発生の原因を探るためには、異常発生の直前の詳細なログの調査が必要な場合がある。本実施の形態２は、これを解決するためになされたもので、異常発生直前のログをキャッシュに記録することにより、異常発生直前から異常発生直後に亘って連続した詳細ログを出力できるようにしたものである。
【００２５】
図５は、この発明の実施の形態２のロギング装置におけるシステム構成図で、図１に対応するものである。図５において、図１と同じ記号は同一部分を示している。ログ出力条件１１にはログキャッシュ保存期間が追加されている。ログキャッシュ保存期間とは、異常発生前のログを一定期間キャッシュに保存するための保存期間を示すパラメータである。また、１０３はログキャッシュ記憶領域である。
【００２６】
図６は、この発明の実施の形態２のロギング装置におけるログ出力関数の処理の流れを示すフローチャートであり、図７はこの発明の実施の形態２のロギング装置におけるログ出力関数を用いたアプリケーションの処理例を示す。
以下、図５〜図７を用いて、本発明のロギング装置の動作について説明する。アプリケーション１の実行時、予め、ログ出力条件設定画面２から、ログ出力条件１１を設定しておくのは実施の形態１と同様である。
【００２７】
図７では例えば、通常時出力レベルにinfo、トリガーレベルにerror、異常時ログ出力レベルにdebug、異常時ログ出力期間に１０分、ログキャッシュ保存期間に３分を指定している。図７のチェックポイント１でログ出力関数（１）がエラーレベル＝debugで呼び出しされた時のログ出力関数の動作を図６のフローチャートで説明する。図６のステップST1において、ログ出力関数のパラメータからエラーレベル(debug)を取得し、ステップST2に進む。ステップST2では、アプリケーション１のデータ記憶領域１０１からログ出力条件１１を読み込みステップST3に進む。
【００２８】
ステップST３では、ログ出力条件１１の異常状態フラグがONかどうか判定し、ONの場合は、ステップST4へ進み、OFFの場合はステップST7に進む。ステップST4では、現在時刻が、ログ出力条件１１の中の異常状態開始時刻＋異常時ログ出力期間以降であるかどうかを判定し、異常時ログを出力する期間中であると判定した場合はステップST6に進み、異常時ログを出力する期間を終えたと判定した場合には、ステップST5に進む。ステップST6では、ログ出力関数のパラメータで指定されたエラーレベルが異常時ログ出力レベル以上であるかどうかを判定し、判定条件に合致した場合にはステップST11に進み、合致しなかった場合にはステップST15に進みログ出力関数を終了する。
【００２９】
ステップST11では、ログ出力関数のパラメータからチェックポイントID、ログメッセージを取得し、ステップST12に進む。ステップST12では現在日時、アプリケーション名を取得し、ステップST13に進む。ステップST13では、ログ内容を生成しステップST14に進む。ステップST14ではログメッセージをログファイルに出力し、ステップST15に進みログ出力関数を終了する。ステップST5では、ログ出力条件１１の異常状態フラグにOFFを設定し、ステップST7に進む。ステップST７では、ログ出力関数のパラメータから取得したエラーレベルが、ログ出力条件１１のトリガーレベルに合致するかどうかを判定し、合致する場合にはステップST8に進み、合致しない場合には、ステップST10に進む。
【００３０】
ステップST8では、異常状態フラグにONを設定し、ステップST9に進む。ステップST9では、ログ出力条件１１の異常状態開始時刻に現在時刻を設定し、ステップST91に進む。ステップST91では、ログキャッシュの内容をすべてログファイルに出力し、ステップST92に進む。ステップST92ではログキャッシュをクリアし、ステップST11に進む。ステップST10では、エラーレベルが通常時ログ出力レベルに合致するかどうかを判定し、合致する場合にはステップST11に進み、合致しない場合は、ステップST101に進む。
【００３１】
ステップST101ではエラーレベルが異常時ログ出力レベルに合致するかどうかを判定し、合致する場合にはステップST102に進み、合致しない場合は、ステップST15に進みログ出力関数を終了する。ステップST102では、ログ出力関数のパラメータ１２からチェックポイントID、ログメッセージを取得し、ステップST103に進む。ステップST103では現在日時、アプリケーション名を取得し、ステップST104に進む。ステップST104では、ログ内容を生成しステップST105に進む。ステップST105ではログキャッシュにログを追加しステップST106に進む。ステップST106では、現在時刻からログファイル保存期間を引いた時刻以前のログをログキャッシュから削除しステップST15に進みログ出力関数を終了する。
【００３２】
図７のチェックポイント１では、ログ出力関数（１）がエラーレベル=debugで呼び出されているため、図６のフローチャートでは、ステップST1→ステップST2→ステップST3→ステップST7（エラーレベルdebug、トリガーレベルerrorのためNo）→ステップST10（エラーレベルdebug、通常時ログ出力レベルinfoのためNo）→ステップST101（エラーレベルdebug、異常時ログ出力レベルdebugのためYes）→ステップST102→ステップST103→ステップST104→ステップST105→ステップST106→ステップST15の順で処理が進み、異常状態フラグがOFFであり、かつ、エラーレベルdebugが、通常時ログ出力条件infoやトリガーレベルerrorに合致しないため、ログ出力は行われないが、エラーレベルが異常時ログ出力レベル以上のため、ログキャッシュへの保存は行われる。その際、ログキャッシュ保存期間を過ぎた古いログはキャッシュから削除される（ステップST106）。
【００３３】
図７のチェックポイント２では、ログ出力関数（２）がエラーレベル＝infoで呼び出されているため、図６のフローチャートでは、ステップST1→ステップST2→ステップST3→ステップST7（エラーレベルinfo、トリガーレベルerrorでNo）→ステップST10(エラーレベルinfo、通常時ログ出力レベルinfoでYes)→ステップST11→ステップST12→ステップST13→ステップST14 →ステップST15の順に処理が進み、エラーレベルinfoが通常時ログ出力条件infoに合致するため、ログ出力が行われる。
【００３４】
図６のチェックポイント３では、ログ出力関数（３）がエラーレベル=errorで呼び出されているため、図６のフローチャートでは、ステップST1→ステップST2→ステップST3→ステップST7（エラーレベルerror、トリガーレベルerrorでYes）→ステップST8→ステップST9→ステップST91→ステップST92→ステップST11→ステップST12→ステップST13→ステップST14→ステップST15の順に処理が進み、エラーレベルerrorがトリガーレベルに合致するため、異常状態フラグがONになり、異常状態開始時刻に現在時刻が設定され、まずログキャッシュ内容が出力され、ログキャッシュ内容がクリアされた後、ログ出力が実施される。
【００３５】
図６のチェックポイント４では、ログ出力関数（４）がエラーレベル＝debugで呼び出されている。通常時であれば、debugは、通常時ログ出力レベルinfoの条件に合致されないためにログ出力がされないが、異常状態フラグがONであり、かつ、異常状態ログ出力レベルに合致することから、異常発生時の詳細ログ出力を自動的に行う処理が動作し、ログ出力が行われる。すなわち、図６のフローチャートでは、ステップST1→ステップST2→ステップST3→ステップST4→ステップST6→ステップST11→ステップST12→ステップST13→ステップST14→ステップST15の順に処理が進む。
【００３６】
図７のチェックポイントNまでログ出力条件１１の異常時ログ出力期間が持続する場合は、チェックポイント３からチェックポイントNまではエラーレベルdebug以上のログが異常時ログ出力条件に合致するため詳細ログが出力される。チェックポイントNとチェックポイントN+1の間に異常時ログ出力期間が終了すると、すなわち、チェックポイントN+1での時刻が異常状態開始時刻＋異常時ログ出力期間以降であった場合、図６のフローチャートでは、ステップST1→ステップST2→ステップST3→ステップST４→ステップST5→ステップST7→ステップST10→ステップST101→ステップST102→ステップST103→ステップST104→ステップST105→ステップST106→ステップST15の順に処理が進むため、異常状態フラグはOFFに設定され、ログ出力も行われないが、ログキャッシュへの保存が行われる。
【００３７】
図６のチェックポイントN+2では、エラーレベル=infoは通常時のログ出力条件に合致するため、チェックポイント２と同じくログ出力が行われる。
以上述べたように実施の形態２によれば、異常発生の直前の詳細なログ出力ができるようになるため、異常発生直前から異常発生直後に亘る詳細な状況を取得できるようになり、ソフトウエアの保守性が更に向上する効果がある。
【００３８】
実施の形態３.
実施の形態２では、異常発生の直前から詳細ログを取得できるようにしていたが、１つのログファイルに様々な異常事象のログが出力されるため、着目している異常事象に関係あるログかどうかの判別が煩雑になるという問題点があった。本実施の形態３はこの問題を解決するために考え出されたもので、異常事象毎に別々のログファイルにログを出力できるようにしている。
【００３９】
図８は、この発明の実施の形態３のロギング装置におけるシステム構成図である。図８において、図１と同じ記号は同じものを示す。４は異常事象別ログファイルであり、内容４１ではファイル先頭に異常事象発生日時を記録している。図９は、この発明の実施の形態３のロギング装置におけるログ出力関数の処理の流れを示すフローチャート、図１０はこの発明の実施の形態３のロギング装置におけるログ出力関数を用いたアプリケーションの処理例である。
【００４０】
以下、図８〜図１０を用いて、本発明のロギング装置の動作について説明する。アプリケーション１の実行時、予め、ログ出力条件設定画面２から、ログ出力条件１１を設定しておく。ここでは先の実施の形態２と同じく、図１０に示すように、通常時出力レベルにinfo、トリガーレベルにerror、異常時ログ出力レベルにdebug、異常時ログ出力期間に１０分、ログキャッシュ保存期間に３分を指定している。図９のチェックポイント１でログ出力関数（１）がエラーレベル＝debugで呼び出しされた時のログ出力関数の動作を図９のフローチャートで説明する。
【００４１】
図９のステップST1において、ログ出力関数のパラメータ１２からエラーレベル(debug)を取得し、ステップST2に進む。ステップST2では、アプリケーション１のデータ記憶領域１０１からログ出力条件１１を読み込みステップST21に進む。ステップST21では、ログ出力先の設定をクリアし、ステップST3に進む。ステップST3では、ログ出力条件１１の異常状態フラグがONかどうか判定し、ONの場合は、ステップST4へ進み、OFFの場合はステップST7に進む。ステップST4では、現在時刻が、ログ出力条件１１の中の異常状態開始時刻＋異常時ログ出力期間以降であるかどうかを判定し、異常時ログを出力する期間中であると判定した場合はステップST6に進み、異常時ログを出力する期間を終えたことを判定した場合には、ステップST5に進む。
【００４２】
ステップST6では、ログ出力関数のパラメータ１２で指定されたエラーレベルが異常時ログ出力レベル以上であるかどうかを判定し、判定条件に合致した場合にはステップST61に進み、合致しなかった場合にはステップST15に進みログ出力関数を終了する。ステップST61ではログ出力先に異常事象別ログファイルを追加し、ステップST10に進む。ステップST10ではエラーレベルが通常時ログ出力レベル以上かどうかを判定し、条件に合致すればステップST110に進み、合致しない場合はステップST11に進む。
【００４３】
ステップST110では、ログ出力先に一般ログファイルを追加し、ステップST11に進む。ステップST11では、ログ出力関数のパラメータ１２からチェックポイントID、ログメッセージを取得し、ステップST12に進む。ステップST12では現在日時、アプリケーション名を取得し、ステップST13に進む。ステップST13では、ログ内容を生成しステップST14に進む。ステップST14ではログメッセージをログ出力先に出力し、ステップST15に進みログ出力関数を終了する。
【００４４】
ステップST5では、ログ出力条件１１の異常状態フラグにOFFを設定し、ステップST7に進む。ステップST７では、ログ出力関数のパラメータから取得したエラーレベルが、ログ出力条件１１のトリガーレベルに合致するかどうかを判定し、合致する場合にはステップST8に進み、合致しない場合には、ステップST101に進む。ステップST8では、異常状態フラグにONを設定し、ステップST9に進む。ステップST9では、ログ出力条件１１の異常状態開始時刻に現在時刻を設定し、ステップST901に進む。
【００４５】
ステップST901では異常事象別のログファイルを新規に作成し、ステップST902に進む。ステップST902では異常事象開始時刻を異常事象別ログファイルの先頭に記録し、ステップST91に進む。ステップST91では、ログキャッシュの内容をすべて異常事象別ログファイルに出力し、ステップST92に進む。ステップST92ではログキャッシュをクリアし、ステップST61に進む。ステップST61ではログ出力先に異常事象別ログファイルを追加し、ステップST10に進む。
【００４６】
ステップST101では、エラーレベルが異常時ログ出力レベル以上かどうかを判定し、判定条件に合致する場合は、ステップST106に進み、合致しない場合は、ステップST10に進む。ステップST106では、現在時刻からログファイル保存期間を引いた時刻以前のログをログキャッシュから削除しステップST107に進む。ステップST107ではログ出力先にログキャッシュを追加し、ステップST10に進む。
【００４７】
図１０のチェックポイント１では、ログ出力関数（１）がエラーレベル=debugで呼び出されているため、図９のフローチャートでは、ステップST1→ステップST2→ステップST21→ステップST3→ステップST7（エラーレベルがdebug、トリガーレベルがerrorであるためNo）→ステップST101（エラーレベルがdebug、異常時ログ出力レベルがdebugのためYes）→ステップST106→ステップST107→ステップST10（エラーレベルがdebug、通常時ログ出力レベルがinfoのためNo）→ステップST11→ステップST12→ステップST13→ステップST14→ステップST15の順で処理が進み、異常状態フラグがOFFであり、かつ、エラーレベルdebugが、通常時ログ出力条件infoやトリガーレベルerrorに合致しないため、ログ出力は行われないが、エラーレベルが異常時ログ出力レベル以上のため、ログキャッシュがログ出力先へ追加され、ログ出力はログキャッシュに対して行われる。その際、ログキャッシュ保存期間を過ぎた古いログはキャッシュから削除される。
【００４８】
図１０のチェックポイント２では、ログ出力関数（２）がエラーレベル＝infoで呼び出されているため、図９のフローチャートでは、ステップST1→ステップST2→ステップST21→ステップST3→ステップST7（エラーレベルがinfo、トリガーレベルがerrorであるためNo）→ステップST101（エラーレベルがinfo、異常時ログ出力レベルがdebugのためNo）→ステップST10(エラーレベルがinfo、通常時ログ出力レベルがinfoのためYes)→ステップST110→ステップST11→ステップST12→ステップST13→ステップST14→ステップST15の順に処理が進み、エラーレベルinfoが通常時ログ出力条件infoに合致するため、ログ出力先にログキャッシュと一般ログファイルが追加され、ログキャッシュと一般ログファイルへのログ出力が行われる。
【００４９】
図９のチェックポイント３では、ログ出力関数（３）がエラーレベル=errorで呼び出されているため、図９のフローチャートでは、ステップST1→ステップST2→ステップST21→ステップST3→ステップST7（エラーレベルがerror、トリガーレベルがerrorのためYes）→ステップST8→ステップST9→ステップST901→ステップST902→ステップST91→ステップST92→ステップST61→ステップST10 →ステップST110 →ステップST11→ステップST12→ステップST13→ステップST14→ステップST15の順に処理が進み、エラーレベルerrorがトリガーレベルに合致するため、異常状態フラグがONになり、異常状態開始時刻に現在時刻が設定され、まずログキャッシュ内容がエラー事象別ログファイルに出力され、ログキャッシュ内容がクリアされた後、ログ出力先に異常事象別ログファイルが追加される。よって、ログ出力がエラー事象別ログファイルと一般ログファイルに出力される。
【００５０】
図９のチェックポイント４では、ログ出力関数（４）がエラーレベル＝debugで呼び出されている。通常時であれば、debugは、通常時ログ出力でレベルinfoの条件に合致されないためにログ出力がされないが、異常状態フラグがONであり、かつ、異常状態ログ出力レベルに合致することから、異常発生時の詳細ログ出力を自動的に行う処理が動作し、ログ出力が行われる。すなわち、図９のフローチャートでは、ステップST1→ステップST2→ステップST21→ステップST3→ステップST4（異常時ログを出力する期間中）→ステップST6（エラーレベルがdebug、異常時ログ出力レベルがdebugのためYes）→ステップST61→ステップST10→ステップST110→ステップST11→ステップST12→ステップST13→ステップST14→ステップST15の順に処理が進む。
【００５１】
図９のチェックポイントNまでログ出力条件１１の異常時ログ出力期間が持続する場合は、チェックポイント３からチェックポイントNまではエラーレベルdebug以上のログが異常時ログ出力条件に合致するため詳細ログが出力される。チェックポイントNとチェックポイントN+1の間に異常時ログ出力期間が終了すると、すなわち、チェックポイントN+1での時刻が異常状態開始時刻＋異常時ログ出力期間以降であった場合、図９のフローチャートでは、ステップST1→ステップST2→ステップST21→ステップST3→ステップST4→ステップST5→ステップST7（エラーレベルがdebug、トリガーレベルがerrorのためNo）→ステップST101(エラーレベルがdebug、異常時ログ出力レベルがdebugのためYes)→ステップST106→ステップST107→ステップST10(エラーレベルdebug、通常時ログ出力レベルdebugのためYes)→ステップST110→ステップST11→ステップST12→ステップST13→ステップST14→ステップST15の順に処理が進むため、異常状態フラグはOFFに設定され、ログ出力も行われないが、ログキャッシュへの保存が行われる。
【００５２】
図１０のチェックポイントN+2では、エラーレベル=infoは通常時のログ出力条件に合致するため、チェックポイント２と同じくログ出力が行われる。
以上述べたように実施の形態３によれば、異常事象毎に別々のログファイルにログを出力できるようにしているため、着目している異常事象に関係あるログかどうかの判別が容易になり、ソフトウエアの保守性が更に向上する効果がある。
【図面の簡単な説明】
【００５３】
【図１】本発明の実施の形態１のシステム構成図である。
【図２】本発明の実施の形態１のログ出力関数のフローチャートである。
【図３】本発明の実施の形態１のロギング装置におけるログ出力関数を用いたアプリケーションの処理例を示す。
【図４】ログ出力関数の呼び出し例とログ出力例を示す図である。
【図５】本発明の実施の形態２のシステム構成図である。
【図６】本発明の実施の形態２のログ出力関数のフローチャートである。
【図７】本発明の実施の形態２のロギング装置におけるログ出力関数を用いたアプリケーションの処理例を示す。
【図８】本発明の実施の形態３のシステム構成図である。
【図９】本発明の実施の形態３のログ出力関数のフローチャートである。
【図１０】本発明の実施の形態３のロギング装置におけるログ出力関数を用いたアプリケーションの処理例を示す。
【符号の説明】
【００５４】
１  アプリケーション、            ２  ログ出力条件設定外面、
４  異常事象別ログファイル、      １１  ログ出力条件、
１２  ログ出力関数のパラメータ、  ３１  ログ出力内容、
４１  異常事象別ログファイルの出力内容、  １０１  データ記憶領域、
１０２  ログ出力関数、    １０３ログキャッシュ。
【図１】
2009205488.tif 000003
【図２】
2009205488.tif 000004
【図３】
2009205488.tif 000005
【図４】
2009205488.tif 000006
【図５】
2009205488.tif 000007
【図６】
2009205488.tif 000008
【図７】
2009205488.tif 000009
【図８】
2009205488.tif 000010
【図９】
2009205488.tif 000011
【図１０】
2009205488.tif 000012