JP2007058265A - ログ出力制御装置及びログ出力制御プログラム - Google Patents

ログ出力制御装置及びログ出力制御プログラム Download PDF

Info

Publication number
JP2007058265A
JP2007058265A JP2005239382A JP2005239382A JP2007058265A JP 2007058265 A JP2007058265 A JP 2007058265A JP 2005239382 A JP2005239382 A JP 2005239382A JP 2005239382 A JP2005239382 A JP 2005239382A JP 2007058265 A JP2007058265 A JP 2007058265A
Authority
JP
Japan
Prior art keywords
log information
log
information
detailed log
detailed
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP2005239382A
Other languages
English (en)
Inventor
Giichi Yomogida
義一 蓬田
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Hitachi Software Engineering Co Ltd
Original Assignee
Hitachi Software Engineering Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Hitachi Software Engineering Co Ltd filed Critical Hitachi Software Engineering Co Ltd
Priority to JP2005239382A priority Critical patent/JP2007058265A/ja
Publication of JP2007058265A publication Critical patent/JP2007058265A/ja
Pending legal-status Critical Current

Links

Images

Landscapes

  • Debugging And Monitoring (AREA)

Abstract

【課題】 アプリケーションプログラムの障害発生の際に、障害内容等の判別のために必要なログ情報のみをファイル装置に出力することにより、ログ情報を効率よく記録,管理することを可能とするログ情報出力制御装置を提供する。
【解決手段】 ログ出力制御プログラム120は、内部情報受信手段121,詳細ログ情報生成手段122,詳細ログ情報格納手段123,プログラムエラー情報受信手段124,障害ログ情報生成手段125,詳細ログ出力要求手段126,ログメッセージ生成手段127,ログメッセージ出力手段128の各処理手段と、一時記憶領域としての詳細ログ情報保持領域129とを備える。詳細ログ出力手段126により、プログラムエラー情報受信のタイミングの直前及び直後の所定範囲内で詳細ログ情報保持領域129に格納された詳細ログ情報をログ記憶装置130の記憶対象として出力することとしている。
【選択図】 図1

Description

本発明は、コンピュータシステム等におけるアプリケーションプログラムに関するログ情報の出力制御装置及びプログラムに関する。
従来より、アプリケーションプログラムにおける障害発生の際の障害内容及び解決方法の判断材料の提供を目的として、アプリケーションプログラム自身の内部情報をログ情報としてファイル装置に格納する処理が一般に行われている。
この場合、可能な限り詳細な内部情報をログ情報として出力することで、障害内容及び解決方法の判断のための有用な資料を提供することが可能となる。
即ち、障害発生前の内部情報には、障害を発生させた原因となる情報が可能性が高く、また、障害発生後の内部情報も、発生した障害に対するエラー処理が正しく行われているかを判断するための材料となり、障害内容及び解決方法の判断がより容易ななものとなっていた。
例えば、ある障害発生が引き金となり後続する処理で別の障害が発生する場合、先に発生した障害のエラー処理が正しく行われているかを確認することで、後に発生した障害が、先に発生した障害のエラー処理の不備に起因するものかどうかを判断することが可能になる。
一方で、ログ情報として出力する内部情報が詳細なものになるほど、データ量が増加することとなるため、ログ情報を記録するファイル装置の容量が満杯になるまでの期間が短くなり、障害の判別・解決のために有効なログ情報を保存できなくなる可能性が高くなっていた。
この点について、従来のログ情報格納方式として、ホストシステムが出力するログ情報をファイル装置に書き出すとともに、出力したログ情報数を計測し、ログ情報数が閾値を超えた場合に、ファイル装置に書き出したログ情報を再び読み込み、ログ情報の重要度を判定し、重要度の高いログ情報だけを再びファイル装置に書き出して、重要度の低いログ情報は統計情報としてファイル装置に書き出す構成が公知となっている(例えば、特許文献1参照。)。
特開平10−275098号公報
しかし、前記特許文献1に記載の構成では、ログ情報の重要度の判断基準が明確ではなく、必ずしも障害内容や解決方法の判別に必要なログ情報の記録を行うことができないという問題があった。
また、ログ情報数の増加により、ファイル装置への書き出し処理も増加するため、より多くのコンピュータリソースを消費することとなっていた。従って、前記特許文献1のように、通常のログ情報の書き出しに加えて、重要度の判定のための再読み込みや書き戻しを行った場合、より一層のコンピュータリソースが消費され、アプリケーションプログラム自身のパフォーマンスの低下を引き起こす恐れがあった。
本発明は前記課題を解決するためのものであり、アプリケーションプログラムのログ情報の出力制御装置として、アプリケーションプログラムの障害発生の際に、障害内容等の判別のために必要なログ情報のみをファイル装置に出力することにより、ログ情報を効率よく記録,管理することを可能とするログ情報出力制御装置を提供することを目的とする。
前記課題を解決するため本発明のログ出力制御装置は、アプリケーションプログラムから出力された内部情報と、プログラムエラー情報とに基づき、ログメッセージを生成して記憶装置に記憶するログ出力制御装置において、前記内部情報を一時記憶領域に格納する手段と、前記プログラムエラー情報の受信時を基準とした任意の範囲の内部情報を前記一時記憶領域から取得して、前記ログメッセージを生成する手段と、生成したログメッセージを前記記憶装置に記憶する手段とを備えることを特徴とする。
また、前記任意の範囲の内部情報は、前記プログラムエラー情報の受信時に格納された内部情報を基準とした前,後の所定数の内部情報を示すことを特徴とする。
また、前記任意の範囲の内部情報は、前記プログラムエラー情報の受信時を基準とした前,後の所定時間内に格納された内部情報を示すことを特徴とする。
また、本発明のログ出力制御プログラムは、アプリケーションプログラムから出力された内部情報と、プログラムエラー情報とに基づき、ログメッセージを生成して記憶装置に記憶する処理をコンピュータに実行させるログ出力制御プログラムにおいて、前記内部情報を一時記憶領域に格納する処理と、前記プログラムエラー情報の受信時を基準とした任意の範囲に格納された内部情報を前記一時記憶領域から取得して、前記ログメッセージを生成する処理と、生成したログメッセージを前記記憶装置に記憶する処理とを前記コンピュータに実行させることを特徴とする。
また、前記任意の範囲の内部情報は、前記プログラムエラー情報の受信時に格納された内部情報を基準とした前,後の所定数の内部情報を示すことを特徴とする。
また、前記任意の範囲の内部情報は、前記プログラムエラー情報の受信時を基準とした前,後の所定時間内に格納された内部情報を示すことを特徴とする。
以上の構成により本発明では、アプリケーションプログラムの障害発生時において、障害発生の原因となった命令の直前と直後の一定数又は一定期間の内部情報のみを詳細ログ情報としてファイル装置に出力することとしたので、アプリケーションプログラム自身のパフォーマンス低下を抑えながら、発生した障害とその障害の判別・解決方法の判断材料となる可能性の高いログ情報を効率良く取得し管理することが可能となる。
以下、本発明の一実施の形態に係るログ情報出力制御装置について、図面に基づき説明する。
図1は、本実施の形態に係るログ情報出力制御装置を備えたコンピュータシステムの概略構成を示すブロック図である。
本実施の形態に係るコンピュータシステムは、ログ情報の出力対象となるアプリケーションプログラム110と、ログ出力制御プログラム120と、ログ情報の出力先となるログ記憶装置130とから構成される。
アプリケーションプログラム110は、アプリケーションプログラム110自身に定義された命令を順次実行して何らかの処理を行うコンピュータシステム上で動作するプログラムであり、ログ情報出力プログラム120に対応する処理手段として、内部情報送信手段111と、エラー発生判定手段112と、プログラムエラー情報送信手段113とを備える。
内部情報送信手段111は、アプリケーションプログラム110が保持する命令実行時の変数値などの内部情報をログ出力制御プログラム120に送信する。
エラー発生判定手段112は、アプリケーションプログラム110の命令の実行時にプログラムエラーの発生を判定する。
プログラムエラー情報送信手段113は、エラー発生判定手段112の判定結果に応じて、発生したプログラムエラーの情報をログ出力制御プログラム120に送信する。
ログ出力制御プログラム120は、内部情報受信手段121,詳細ログ情報生成手段122,詳細ログ情報格納手段123,プログラムエラー情報受信手段124,障害ログ情報生成手段125,詳細ログ出力要求手段126,ログメッセージ生成手段127,ログメッセージ出力手段128の各処理手段と、一時記憶領域としての詳細ログ情報保持領域129とを備える。
内部情報受信手段121は、内部情報送信手段111から内部情報を受信する。
詳細ログ情報生成手段122は、内部情報受信手段121の受信した内部情報に基づき詳細ログ情報を生成する。
詳細ログ情報格納手段123は、詳細ログ情報生成手段122の生成した詳細ログ情報を詳細ログ情報保持領域129に格納する。
プログラムエラー情報受信手段124は、プログラムエラー情報送信手段113から送信されたプログラムエラー情報を受信する。
障害ログ情報生成手段125は、プログラムエラー情報受信手段124の受信したプログラムエラー情報に基づき障害ログ情報を生成する。
詳細ログ出力手段126は、プログラムエラー情報受信手段124のプログラムエラー情報の受信に応じて、詳細ログ保持領域129に格納された詳細ログ情報を出力する。
ログメッセージ生成手段127は、詳細ログ出力手段126が詳細ログ情報保持領域129から出力した詳細ログ情報と、障害ログ情報生成手段125の生成した障害ログ情報とに基づき詳細ログメッセージ及び障害ログメッセージを生成する。
ログメッセージ出力手段128は、ログメッセージ生成手段127の生成した詳細ログメッセージ及び障害ログメッセージをログ記憶装置130に出力する。
本実施の形態では、詳細ログ出力手段126により、プログラムエラー情報受信手段124によるプログラムエラー情報受信のタイミングの直前及び直後の所定範囲内(一定数又は一定期間)に詳細ログ情報保持領域129に格納された詳細ログ情報をログ記憶装置130の記憶対象として出力することとしている。
以上の構成に基づき、本実施の形態に係るログ情報出力制御装置の行う処理について説明する。
図2は、アプリケーションプログラム110の一例として、Java(「Java」は、米国サンマイクロシステムズ社の登録商標である。)で記述した命令群を示す図である。
メソッド210は、アプリケーションプログラム110に定義された複数の命令で構成されるJavaのメソッドであり、アプリケーションプログラム110はメソッド210の命令を先頭から順に実行する。
エラー発生判定手段112に相当するプログラムエラー判定構造211は、try節212とcatch節213とで構成され、アプリケーションプログラム110はtry節212内の命令群214の実行時にJavaにおけるプログラムエラーとしての例外が発生すると、それ以降の命令群を実行せずにcatch節213に制御を移し、catch節213内の命令群215を実行する。catch節213内の命令群215では、catch行で定義されたプログラムエラー変数230で例外情報にアクセスすることが可能である。
なお、本例では、Javaのtry〜catch構文によってエラー判定手段111を実現しているが、if構文などのプログラムの一般的な制御構造でも実現可能である。
内部情報送信手段111に相当する詳細ログ出力命令216、217、218、219は、引数231、引数232に示すように、アプリケーションプログラム110の内部情報として、引数231にクラス名を、引数232にメッセージをそれぞれ文字列形式で指定して実行することが可能である。また、式233に示すように、プログラム中の変数を「+」文字で連結して引数232に指定することも可能である。
エラー発生命令220は、プログラムエラーが発生する可能性のある命令であり、引数234に数値を構成する文字列(0〜9)以外が指定された場合にプログラムエラーが発生する。
プログラムエラー情報送信手段113に相当する障害ログ出力命令221は、アプリケーションプログラム110の例外情報と内部情報をログ出力制御プログラム120に出力する命令であり、詳細ログ出力命令216〜219と同様に、アプリケーションプログラム110の内部情報として、引数にクラス名、メッセージを文字列で指定するとともに、引数235に示すように、プログラムエラー変数230を引数として指定することで、例外情報を指定して実行することが可能である。
図3は、アプリケーションプログラム110の内部情報に基づき詳細ログ情報生成手段122の生成した詳細ログ情報のデータ構造の一例を示す図である。
本例に示す詳細ログ情報は、生成時刻301,クラス名302,メッセージ303の各データ項目を有する。
生成時刻301は、詳細ログ情報生成手段122による生成処理が行われた時刻を示す。
クラス名302は、アプリケーションプログラム110における詳細ログ情報出力命令が実行されたクラス名を示す文字列である。
メッセージ303は、アプリケーションプログラム110の内部情報を含んだメッセージを表す文字列である。
図4は、アプリケーションプログラム110のプログラムエラー情報に基づき障害ログ情報生成手段125が生成した障害ログ情報のデータ構造の一例を示す図である。
本例に示す障害ログ情報は、生成時刻401,クラス名402,メッセージ403,例外情報404の各データ項目を有する。
生成時刻401は、障害ログ情報生成手段125による生成処理が行われた時刻を示す。
クラス名は、アプリケーションプログラム110における障害ログ情報出力命令が実行されたクラス名を示す文字列である。
メッセージ403は、アプリケーションプログラム110の内部情報を含んだメッセージを表す文字列である。
例外情報404は、発生した例外情報の詳細を表す。
次に、本実施の形態における詳細ログ情報保持領域129の詳細ログ情報の格納処理及び出力処理を図5〜図8のイメージを用いて説明する。
図5は、詳細ログ情報保持領域129における詳細ログ情報の格納処理を示すイメージ図である。
詳細ログ情報保持領域129は、図5〜8に示すように、配列の先端と末尾をつないで環状にした固定長のデータ構造で構成する。このデータ構造は、一般的にリングバッファと呼ばれる。
図5において、501は現在の詳細ログ情報格納位置となる詳細ログ情報要素を指し示す登録ポインタであり、502〜504は過去の詳細ログ情報格納位置となる詳細ログ情報要素を指し示す登録ポインタである。505は、登録ポインタ501の移動方向を示す矢印である。
506は詳細ログ情報要素に格納された詳細ログ情報を示し、507は格納される前の詳細ログ情報を示す。
508は詳細ログ情報が格納されていない詳細ログ情報要素を示し、509は詳細ログ情報が格納されている詳細ログ情報要素を示す。
本処理では、登録ポインタ501は、まず、ログ出力制御プログラム120の起動時に登録ポインタ503の位置に存在する。詳細ログ情報格納手段123は登録ポインタ501が指し示す詳細ログ情報要素に詳細ログ情報507を格納していく。
次に、登録ポインタ501は、詳細ログ情報格納手段123による詳細ログ情報507の格納に応じて、登録ポインタ502〜504に示すように、矢印505が示す方向に、各詳細ログ情報要素を順に指し示しながら移動していく。
図6は、障害発生時における詳細ログ情報の出力処理を示すイメージ図である。
図6において、601は詳細ログ出力手段126によって出力要求がされた時点における登録ポインタを示す。
602〜605は詳細ログ出力手段126からの出力要求に応じて生成する出力ポインタであり、606は出力ポインタ601の移動方向を示す矢印である。
607は出力ポインタ601が指し示す詳細ログ情報要素に格納されていた詳細ログ情報であり、608は出力された詳細ログ情報である。
609は詳細ログ出力手段126によって出力要求がされた時点における登録ポインタの指し示す詳細ログ情報要素を示す障害発生ポインタであり、610は障害発生ポインタの指し示す詳細ログ情報要素に到達した出力ポインタである。
本処理では、詳細ログ出力手段126によって出力要求がされた時点で出力ポインタ602及び障害発生ポインタ609が生成され、矢印606に示す方向に各詳細ログ情報要素を順に指し示しながら移動していく。
次に、出力ポインタ603〜605に示すように、詳細ログ情報607が格納されている各詳細ログ情報要素に到達したときに、各詳細ログ情報608を順に出力していく。
最後に、出力ポインタ610に示すように、登録ポインタ601が指し示す各詳細ログ情報要素に到達すると出力処理を終了する。
図7は、障害発生後における詳細ログ情報の格納方法を示すイメージ図である。
図7において、701は障害発生時に生成された障害発生ポインタを示し、702〜704は登録ポインタを示す。705は登録ポインタ702〜704の移動方向を表す矢印を示す。706は、障害発生後の詳細ログ情報の出力対象となる詳細ログ情報要素を示す。ここで詳細ログ情報の出力対象となる詳細ログ情報要素706は、予め上限値が設定されているものとし、本例では上限値が「4」に設定された場合を示す。
本処理では、登録ポインタ702〜704に示すように、障害発生ポインタ701の指し示す詳細ログ情報要素から順に矢印705の方向に、詳細ログ情報要素706に詳細ログ情報を格納していく。
図8は、障害発生後における詳細ログ情報の出力方法を示すイメージ図である。
図8において、801は障害発生時に生成された障害発生ポインタを示し、802は障害発生ポインタ801の移動方向を表す矢印を示す。803は登録ポインタを示す。804は、障害発生後の詳細ログ情報の出力対象となる詳細ログ情報要素を示す。805は出力対象となった詳細ログ情報を示す。
本処理では、予め任意に指定された数の詳細ログ情報要素804の全てに詳細ログ情報が格納されたときに、矢印802に示す方向に登録ポインタ803の指し示す詳細ログ情報要素まで障害発生ポインタ801を移動していく。この際、障害発生ポインタ801移動に伴い、詳細ログ情報要素804に格納された詳細ログ情報805を順に出力し、登録ポインタ803の指し示す詳細ログ情報要素まで到達したときに、障害発生ポインタ801を削除する。
以上の各処理の詳細について、図9〜12のフローチャートを用いて説明する。
図9は、本実施の形態に係るコンピュータシステムが行う基本処理フローを示す図である。
まず、アプリケーションプログラム110を起動すると、アプリケーションプログラム110に定義された起動命令に応じてログ出力制御プログラム120を起動する(ステップ901)。
ログ出力制御プログラム120の詳細ログ情報格納手段123は、詳細ログ情報保持領域129における詳細ログ情報格納開始位置を指し示す登録ポインタを生成する(ステップ902)。
アプリケーションプログラム110は、定義された命令群を先頭から順に読み込んで実行していく(ステップ903)。
エラー発生判定手段112は、命令の実行に成功したか否かを判定し(ステップ904)、成功した場合には、次の命令を読み込む(ステップ905)。
読み込んだ命令が詳細ログ出力命令か否かを判定し(ステップ906)、詳細ログ出力命令の場合には、内部情報送信手段111が詳細ログ出力処理を実行して(ステップ907)、次の命令を読み込む(ステップ908)。詳細ログ出力処理では、アプリケーションプログラム110の内部情報として引数を指定して読み込んだ詳細ログ出力命令を実行し、ログ出力制御プログラム120で詳細ログ情報の生成と詳細ログ情報格納領域129への格納を実行する。詳細は図11のフローチャートで後述する。
一方、詳細ログ出力命令でない場合には、アプリケーションプログラム110の終了命令に到達したか否かを判定し(ステップ909)、到達した場合には処理を終了し、到達していない場合には命令の実行を繰り返す。
ステップ904において、ステップ903で命令が正しく実行されずにプログラムエラーが発生したと判定した場合には、アプリケーションプログラム110の制御をcatch節に移す(ステップ910)。ここで、命令の実行の失敗としては、例えば、図2に示すエラー発生命令220の引数232に数値を構成する文字列以外を指定し、プログラムエラーが発生した場合が対応する。
次に、プログラムエラー情報送信手段113が、catch節に定義された障害ログ出力処理を実行した後(ステップ911)、次の命令を読み込む(ステップ908)。障害ログ出力処理では、catch節に定義された障害ログ出力命令を実行し、障害ログ情報の生成と障害ログメッセージとして出力する処理を実行する。詳細は図12のフローチャートで後述する。
図10は、ステップ907の詳細ログ出力処理に対応したログ出力制御プログラム120の処理の詳細を示すフローチャートである。
まず、アプリケーションプログラム110の内部情報送信手段111によって送信された内部情報として引数の値を、内部情報受信手段121が受信する(ステップ1001)。
詳細ログ情報保持領域129に障害発生ポインタが存在するか否かを判定し(ステップ1002)、存在しない場合には、内部情報受信手段121が受信した内部情報を、詳細ログ情報生成手段122に送信し、内部情報から詳細ログ情報を生成する(ステップ1003)。詳細ログ情報の生成では、現在時刻,引数によって送信されたクラス名及び内部情報を含んだメッセージを各データ項目とする。
次に、詳細ログ情報格納手段123が、詳細ログ情報保持領域129において、登録ポインタの指し示す詳細ログ情報要素に、詳細ログ情報生成手段122の生成した詳細ログ情報を格納し(ステップ1004)、矢印に示す次の詳細ログ情報要素に登録ポインタを移動させて処理を終了する(ステップ1005)。
一方、詳細ログ情報保持領域129に障害発生ポインタが存在する場合には(ステップ1002)、詳細ログ情報要素カウンタ値を「1」増加させる(ステップ1006)。ここで、障害発生ポインタの生成については図12のフローチャートで説明する。
詳細ログ情報要素カウンタ値と、予め任意に指定された詳細ログ情報要素上限値(詳細ログ出力数)とを比較し(ステップ1007)、詳細ログ情報要素カウンタ値が詳細ログ情報要素上限値以下であれば、詳細ログ情報の生成,格納を行う(ステップ1003〜1005)。
一方、詳細ログ情報要素カウンタ値が詳細ログ情報要素上限値より大きい場合には、詳細ログ出力手段126が、障害発生ポインタの指し示す詳細ログ情報要素に格納された詳細ログ情報を出力し、ログメッセージ生成手段127が出力された詳細ログ情報を読み込み詳細ログメッセージを生成して、ログメッセージ出力手段128がログ記録装置130に出力する(ステップ1008)。
次に、障害発生ポインタが指し示す詳細ログ情報要素に格納された詳細ログ情報を削除し(ステップ1009)、障害発生ポインタを次の詳細ログ情報要素の位置に設定する(ステップ1010)。
障害発生ポインタが登録ポインタの指し示す詳細ログ情報要素に到達したか否かを判定し(ステップ1011)、到達した場合には障害発生ポインタを削除して(ステップ1012)、障害ログ情報要素カウンタ値を「0」に設定する(ステップ1013)。その後、詳細ログ情報の生成,格納を行う(ステップ1003〜1005)。
一方、障害発生ポインタが登録ポインタの指し示す詳細ログ情報要素に到達していない場合には、詳細ログ情報の出力等を繰り返す(ステップ1008〜1010)。
図11は、ステップ911の障害ログ出力処理に対応したログ出力制御プログラム120の処理の詳細を示すフローチャートである。
まず、アプリケーションプログラム110のプログラムエラー情報送信手段113によって送信されたプログラムエラー情報としてのクラス名,メッセージ及び例外情報を、プログラムエラー情報受信手段124が受信して(ステップ1101)、詳細ログ出力手段126に通知する(ステップ1102)。
詳細ログ出力要求手段126は、詳細ログ情報保持領域129に出力ポインタを生成し、出力ポインタが指し示す位置を、登録ポインタが指し示す詳細ログ情報要素から一つ進めた位置の要素に設定する(ステップ1103)。
次に、出力ポインタが指し示す詳細ログ情報要素に格納された詳細ログ情報が存在するか否かを判定し(ステップ1104)、詳細ログ情報が存在しない場合には、出力ポインタが指し示す位置を次の詳細ログ情報要素に進めて(ステップ1105)、出力ポインタが登録ポインタの指し示す詳細ログ情報要素に到達したか否かを判定する(ステップ1106)。判定の結果、登録ポインタの指し示す詳細ログ情報要素に到達していない場合には、格納された詳細ログ情報が存在するか否かの判定を行う(ステップ1104)。
一方、ステップ1104において、詳細ログ情報要素に詳細ログ情報が存在する場合には、出力ポインタが指し示す詳細ログ情報要素に格納された詳細ログ情報を出力し、ログメッセージ生成手段127が出力された詳細ログ情報を読み込み、詳細ログメッセージを生成してログ記録装置130に出力する(ステップ1107)。
次に、出力ポインタが指し示す詳細ログ情報要素に格納された詳細ログ情報を削除し(ステップ1108)、出力ポインタを次の詳細ログ情報要素の位置に設定する(ステップ1109)。
出力ポインタが登録ポインタの指し示す詳細ログ情報要素に到達したか否かを判定し(ステップ1110)、到達した場合には障害発生ポインタを生成して、登録ポインタが指し示す詳細ログ情報要素の位置に設定し(ステップ1111)、障害ログ情報要素カウンタ値を「0」に設定する(ステップ1112)。
一方、障害発生ポインタが登録ポインタの指し示す詳細ログ情報要素に到達していない場合には、詳細ログ情報の出力等を繰り返す(ステップ1107〜1109)。
次に、障害ログ情報生成手段125は、プログラムエラー情報受信手段124の受信したプログラムエラー情報から障害ログ情報を生成する(ステップ1113)。ここで、障害ログ情報は、現在時刻と、障害ログ出力命令の引数として送信されたクラス名,メッセージ及び例外情報から取得した例外のメソッド呼び出しスタックの情報(Javaではスタックトレースと呼ばれる。)とで生成する。
ログメッセージ生成手段127は、障害ログ情報生成手段125が生成した障害ログ情報を読み込み、障害ログメッセージを生成してログ記録装置130に出力して処理を終了する(ステップ1114)。
図12は、図9〜11に示す処理の結果、ログ記録装置に出力された詳細ログメッセージ及び障害ログメッセージを記録したログファイルの一例を示す図である。
ログファイルの記録された各ログメッセージは、時刻1201,ログ種別1202,クラス名1203,ログメッセージ1204のデータを有する。
詳細ログメッセージ1205は、図3に示す詳細ログ情報を構成する生成時刻301と、ログ種別を示す[DEBUG]という文字列と、クラス名302と、メッセージ303とを「,」で連結して生成する。詳細ログメッセージ1205は、詳細ログ出力命令の実行によって生成された詳細ログ情報が詳細ログメッセージとして出力されたことを表し、エラー発生命令の実行直前のアプリケーションプログラム110の内部情報が出力されていることを示している。詳細ログメッセージ群1208は、エラー発生命令の実行直前までに詳細ログ情報保持領域129に格納された(詳細ログ情報要素数−1)個の詳細ログ情報が、詳細ログメッセージとして出力されたことを表す。
障害ログメッセージ1206は、図4に示す障害ログ情報を構成する生成時刻401と、ログ種別を示す[ERROR]という文字列と、クラス名402と、メッセージ403とを「,」で連結し、さらに改行して、例外情報404を付加して生成する。障害ログメッセージ1206は、障害ログ出力命令の実行によって出力された障害ログメッセージを表し、エラー発生命令の実行に失敗して、catch節に制御が移ったことを示している。障害ログメッセージ1206に含まれる例外メッセージ1207は、障害ログ情報に含まれる例外情報404に対応する。
詳細ログメッセージ1209は、詳細ログ出力命令の実行によって生成された詳細ログ情報が詳細ログメッセージとして出力されたことを表し、障害発生後の命令が正しく実行されていることを示している。障害発生後詳細ログメッセージ群1210は、障害ログメッセージ1206出力後、すなわちエラー発生命令の実行失敗後に、詳細ログ情報保持領域129に格納された(詳細ログ情報要素上限値)個の詳細ログ情報が、詳細ログメッセージとして出力されたことを表す。
ログメッセージ群1211は、障害ログメッセージ1207が示す障害とは別の障害が発生して、詳細ログメッセージと障害ログメッセージが出力されたことを表す。この場合、障害ログメッセージ1207が示す時刻"2005-02-23 17:49:43"に障害発生後、障害ログメッセージ1212が示す時刻"2005-02-23 18:59:02"まで障害が発生していないことを示す。
以上の処理により、本実施の形態に係るログ出力制御装置では、障害発生時を基準とした一定範囲の詳細ログメッセージのみがログ記憶装置に記録されるため、ログ記憶装置に対して効率良くログメッセージを記憶させることが可能となる。
なお、本発明のログ出力制御装置における詳細ログ情報保持領域に格納された詳細ログ情報の出力形態としては、前記実施の形態に示すように、障害発生の前後の一定数の詳細ログを出力するものに限らず、例えば、障害発生の前後の一定期間の詳細ログ情報を出力することとしてもよい。
以下、本発明の第2実施の形態に係るログ出力制御装置として、障害発生の前後の一定期間の詳細ログ情報を出力する形態について説明する。
図13は、第2実施の形態に係るログ出力制御装置の詳細ログ情報保持領域129における詳細ログ情報格納処理を示すイメージ図である。
本実施の形態では、詳細ログ情報保持領域129を、配列の先端と末尾をつないで環状にした固定長のデータ構造で構成し、秒単位でバッファを利用している。
図13において、各詳細ログ情報要素1301には、1つの時刻情報を格納することができる。この時刻情報を詳細ログ情報時刻と呼ぶ。
詳細ログ情報リスト1302は、複数の詳細ログ情報を格納することができる可変長の配列で、リスト先頭からの詳細ログ情報の読み出しと、リストの末尾への詳細ログ情報の追加が可能なデータ構造を表す。線分1303は、詳細ログ情報要素1301が一つの詳細ログ情報リスト1302を保持していることを表している。
登録ポインタ1304は現在の詳細ログ情報格納位置となる詳細ログ情報要素を指し示し、登録ポインタ1305〜1307は過去の詳細ログ情報格納位置となる詳細ログ情報要素を指し示している。矢印1308は、登録ポインタの移動方向を示している。
詳細ログ情報1309は詳細ログ情報要素に格納されたものを示し、詳細ログ情報1310は詳細ログ情報要素に新たに格納されるものを示す。
本実施の形態では、登録ポインタ1304は、まず、ログ出力制御プログラム120の起動時には登録ポインタ1305の位置に存在する。次に、登録ポインタ1304は、詳細ログ情報格納手段123によって詳細ログ情報時刻が1秒ずつ加算される毎(1秒経過毎)に、登録ポインタ1305〜1307に示すように、矢印1308が示す方向に、各詳細ログ情報要素を順に指し示しながら移動していく。
詳細ログ情報1310は、登録ポインタ1304が指し示す詳細ログ情報要素が保持する詳細ログ情報リストの末尾に格納される。
以上の構成に基づき、本発明の第2実施の形態に係るログ出力制御装置の行う各処理についてフローチャートを用いて説明する。
本実施の形態に係るコンピュータシステムが行う基本処理は、図9のフローチャートに示す処理と略同様であるが、ステップ902の処理に加えて、現在時刻を取得し、取得した現在時刻を詳細ログ情報時刻として、登録ポインタの指し示す位置の詳細ログ情報要素に格納する処理を行う。なお、本実施例で扱う時刻の最小単位は秒とする。
図14は、図9のステップ907の詳細ログ出力処理に対応したログ出力制御プログラム120の処理の詳細を示すフローチャートである。
まず、アプリケーションプログラム110の内部情報送信手段111によって送信された内部情報として引数の値を、内部情報受信手段121が受信するとともに(ステップ1401)、現在時刻を取得する(ステップ1402)。
取得した現在時刻と、登録ポインタの指し示す詳細ログ情報要素の詳細ログ情報時刻とを比較し、両時刻が一致するか否かを判定する(ステップ1403)。
判定の結果、両時刻が一致する場合には、内部情報受信手段121が受信した内部情報を、詳細ログ情報生成手段122に送信し、内部情報から詳細ログ情報を生成する(ステップ1404)。
次に、詳細ログ情報格納手段123が、詳細ログ情報保持領域129において、登録ポインタの指し示す詳細ログ情報要素の詳細ログ情報リストの末尾に、詳細ログ情報生成手段122の生成した詳細ログ情報を格納して処理を終了する(ステップ1405)。
一方、ステップ1403において、両時刻が不一致の場合には、登録ポインタの指し示す詳細ログ情報要素の詳細ログ情報時刻を取得して、当該時刻に1秒加算し、次詳細ログ情報時刻を生成する(ステップ1406)。
次に、登録ポインタを次の詳細ログ情報要素に設定し(ステップ1407)、当該詳細ログ情報要素に、ステップ1406で生成した次詳細ログ情報時刻を設定するとともに(ステップ1408)、詳細ログ情報リストを空にする(ステップ1409)。
次に、詳細ログ情報保持領域129に障害発生ポインタが存在するか否かを判定し(ステップ1410)、障害発生ポインタが存在する場合には、詳細ログ情報要素カウンタ値を「1」増加させる(ステップ1411)。
詳細ログ情報要素カウンタ値と、予め任意に指定された詳細ログ情報要素上限値とを比較し(ステップ1412)、詳細ログ情報要素カウンタ値が詳細ログ情報要素上限値より大きい場合には、後述する詳細ログメッセージ出力処理を行う(ステップ1413)。
一方、ステップ1410で障害発生ポインタが存在すると判定した場合、ステップ1412で詳細ログ情報要素カウンタ値が詳細ログ情報要素上限値以下と判定した場合、または、ステップ1413で詳細ログメッセージ出力処理を行った後には、現在時刻と、登録ポインタの指し示す詳細ログ情報要素の詳細ログ情報時刻とを比較し、両時刻が一致するか否かを判定し(ステップ1414)、一致する場合には、詳細ログ情報の生成及び格納を行う(1404,1405)。一方、不一致の場合には、ステップ1406以降の処理を繰り返す。
図15は、ステップ1413に示す詳細ログメッセージ出力処理の詳細を示すフローチャートである。
本処理では、まず、障害発生ポインタが指し示す詳細ログ情報要素の詳細ログ情報リストが空では無いか否かを判定し(ステップ1501)、空でない場合には、詳細ログ情報リストに格納された詳細ログ情報を出力し、ログメッセージ生成手段127が出力された詳細ログ情報を読み込み、詳細ログメッセージを生成してログ記録装置に出力する(ステップ1502)。
次に、障害発生ポインタが指し示す詳細ログ情報要素の詳細ログ情報リストを空にし(ステップ1503)、障害発生ポインタを次の詳細ログ情報要素の位置に設定する(ステップ1504)。
障害発生ポインタが登録ポインタの指し示す詳細ログ情報要素に到達したか否かを判定し(ステップ1505)、到達した場合には障害発生ポインタを削除して(ステップ1506)、詳細ログ情報要素カウンタ値を初期値の「1」に設定して処理を終了する(ステップ1507)。
一方、ステップ1505で、到達していない場合には、ステップ1501に戻り、処理を繰り返す。
図16は、図9のステップ911の障害ログ出力処理に対応したログ出力制御プログラム120の処理の詳細を示すフローチャートである。
まず、アプリケーションプログラム110のプログラムエラー情報送信手段113によって送信されたプログラムエラー情報としてのクラス名,メッセージ及び例外情報である引数の値を、プログラムエラー情報受信手段124が受信して(ステップ1601)、詳細ログ出力手段126に通知する(ステップ1602)。
詳細ログ出力要求手段126は、詳細ログ情報保持領域129に出力ポインタを生成し、出力ポインタが指し示す位置を、登録ポインタが指し示す詳細ログ情報要素から一つ進めた位置の要素に設定する(ステップ1603)。
次に、出力ポインタが指し示す詳細ログ情報要素の詳細ログ情報リストに格納された詳細ログ情報が存在するか否かを判定し(ステップ1604)、詳細ログ情報が存在しない場合には、出力ポインタが指し示す位置を次の詳細ログ情報要素に進めて(ステップ1605)、出力ポインタが登録ポインタの指し示す詳細ログ情報要素に到達したか否かを判定する(ステップ1606)。判定の結果、登録ポインタの指し示す詳細ログ情報要素に到達していない場合には、格納された詳細ログ情報が存在するか否かの判定を行う(ステップ1604)。
一方、ステップ1604において、詳細ログ情報要素の詳細ログ情報リストに格納された詳細ログ情報が存在する場合には、出力ポインタが指し示す詳細ログ情報要素の詳細ログ情報リストに格納された詳細ログ情報を出力し、ログメッセージ生成手段127が出力された詳細ログ情報を読み込み、詳細ログメッセージを生成してログ記録装置130に出力する(ステップ1607)。
次に、出力ポインタが指し示す詳細ログ情報要素の詳細ログ情報リストに格納された詳細ログ情報を削除し(ステップ1608)、出力ポインタを次の詳細ログ情報要素の位置に設定する(ステップ1609)。
出力ポインタが登録ポインタの指し示す詳細ログ情報要素に到達したか否かを判定し(ステップ1610)、到達した場合には障害発生ポインタを生成して、登録ポインタが指し示す詳細ログ情報要素の位置に設定し(ステップ1611)、障害ログ情報要素カウンタ値を「1」に設定する(ステップ1612)。
次に、障害ログ情報生成手段125は、プログラムエラー情報受信手段124の受信したプログラムエラー情報から障害ログ情報を生成する(ステップ1613)。
ログメッセージ生成手段127は、障害ログ情報生成手段125が生成した障害ログ情報を読み込み、障害ログメッセージを生成してログ記録装置130に出力して処理を終了する(ステップ1614)。
一方、出力ポインタが登録ポインタの指し示す詳細ログ情報要素に到達していない場合には、詳細ログ情報の出力等を繰り返す(ステップ1607〜1609)。
以上の処理により、本実施の形態に係るログ出力制御装置によっても、前記第1実施の形態に係るログ出力制御装置と同様に、障害発生時を基準とした一定範囲の詳細ログメッセージのみがログ記憶装置に記録されるため、ログ記憶装置に対して効率良くログメッセージを記憶させることが可能となる。
なお、本実施の形態に係るログ出力制御装置の詳細ログ情報保持領域の要素数,詳細ログ情報要素上限値は、本発明を適用するコンピュータシステムの性能等を考慮して、適宜決定するのが望ましい。
本発明の一実施の形態に係るログ出力制御装置を構成するコンピュータシステムの概略構成を示すブロック図である。 コンピュータシステムを構成するアプリケーションプログラムのソースコードの一例を示す図である。 詳細ログ情報のデータ構造の一例を示す図である。 障害ログ情報のデータ構造の一例を示す図である。 本発明の第1実施の形態に係る詳細ログ情報保持領域への詳細ログ情報の格納処理を示すイメージ図である。 障害発生時における本発明の第1実施の形態に係る詳細ログ情報保持領域からの詳細ログ情報の出力処理を示すイメージ図である。 障害発生後における本発明の第1実施の形態に係る詳細ログ情報保持領域への詳細ログ情報の格納処理を示すイメージ図である。 障害発生後における本発明の第1実施の形態に係る詳細ログ情報保持領域からの詳細ログ情報の出力処理を示すイメージ図である。 本発明の第1実施の形態に係るコンピュータシステムの行う基本処理を示すフローチャートである。 詳細ログ出力処理に対応したログ出力制御プログラムの処理の詳細を示すフローチャートである。 障害ログ出力処理に対応したログ出力制御プログラムの処理の詳細を示すフローチャートである。 ログ記憶装置に記録されるログファイルのデータ構造の一例を示す図である。 本発明の第2実施の形態に係る詳細ログ情報保持領域への詳細ログ情報の格納処理を示すイメージ図である。 本発明の第2実施の形態に係る詳細ログ出力処理に対応したログ出力制御プログラムの処理の詳細を示すフローチャートである。 詳細ログメッセージ出力処理の詳細を示すフローチャートである。 本発明の第2実施の形態に係る障害ログ出力処理に対応したログ出力制御プログラムの処理の詳細を示すフローチャートである。
符号の説明
110 アプリケーションプログラム、111 内部情報送信手段、112 エラー情報判定手段、113 プログラムエラー情報送信手段、120 ログ出力制御プログラム、121 内部情報受信手段、122 詳細ログ情報生成手段、123 詳細ログ情報格納手段、124 プログラムエラー情報受信手段、125 障害ログ情報生成手段、126 詳細ログ出力要求手段、127 ログメッセージ生成手段、128 ログメッセージ出力手段、129 詳細ログ情報保持領域、130 ログ記憶装置。

Claims (6)

  1. アプリケーションプログラムから出力された内部情報と、プログラムエラー情報とに基づき、ログメッセージを生成して記憶装置に記憶するログ出力制御装置において、
    前記内部情報を一時記憶領域に格納する手段と、
    前記プログラムエラー情報の受信時を基準とした任意の範囲の内部情報を前記一時記憶領域から取得して、前記ログメッセージを生成する手段と、
    生成したログメッセージを前記記憶装置に記憶する手段とを備えることを特徴とするログ出力制御装置。
  2. 前記任意の範囲の内部情報は、
    前記プログラムエラー情報の受信時に格納された内部情報を基準とした前,後の所定数の内部情報を示すことを特徴とする請求項1に記載のログ出力制御装置。
  3. 前記任意の範囲の内部情報は、
    前記プログラムエラー情報の受信時を基準とした前,後の所定時間内に格納された内部情報を示すことを特徴とする請求項1に記載のログ出力制御装置。
  4. アプリケーションプログラムから出力された内部情報と、プログラムエラー情報とに基づき、ログメッセージを生成して記憶装置に記憶する処理をコンピュータに実行させるログ出力制御プログラムにおいて、
    前記内部情報を一時記憶領域に格納する処理と、
    前記プログラムエラー情報の受信時を基準とした任意の範囲に格納された内部情報を前記一時記憶領域から取得して、前記ログメッセージを生成する処理と、
    生成したログメッセージを前記記憶装置に記憶する処理と
    を前記コンピュータに実行させることを特徴とするログ出力制御プログラム。
  5. 前記任意の範囲の内部情報は、
    前記プログラムエラー情報の受信時に格納された内部情報を基準とした前,後の所定数の内部情報を示すことを特徴とする請求項4に記載のログ出力制御プログラム。
  6. 前記任意の範囲の内部情報は、
    前記プログラムエラー情報の受信時を基準とした前,後の所定時間内に格納された内部情報を示すことを特徴とする請求項4に記載のログ出力制御プログラム。



JP2005239382A 2005-08-22 2005-08-22 ログ出力制御装置及びログ出力制御プログラム Pending JP2007058265A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2005239382A JP2007058265A (ja) 2005-08-22 2005-08-22 ログ出力制御装置及びログ出力制御プログラム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2005239382A JP2007058265A (ja) 2005-08-22 2005-08-22 ログ出力制御装置及びログ出力制御プログラム

Publications (1)

Publication Number Publication Date
JP2007058265A true JP2007058265A (ja) 2007-03-08

Family

ID=37921755

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2005239382A Pending JP2007058265A (ja) 2005-08-22 2005-08-22 ログ出力制御装置及びログ出力制御プログラム

Country Status (1)

Country Link
JP (1) JP2007058265A (ja)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2008226017A (ja) * 2007-03-14 2008-09-25 Ns Solutions Corp ログ情報生成装置、ログ情報管理装置、ログ情報生成方法、ログ情報管理方法及びプログラム
WO2012111167A1 (ja) * 2011-02-14 2012-08-23 株式会社日立製作所 トレース情報取得方法、コンピュータシステム及びプログラム
JP2013191070A (ja) * 2012-03-14 2013-09-26 Nomura Research Institute Ltd 監視装置
JP2017208037A (ja) * 2016-05-20 2017-11-24 Necフィールディング株式会社 監視装置、情報監視システム、監視装置の制御方法、及びプログラム

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0573366A (ja) * 1991-09-12 1993-03-26 Nec Corp 異常トレースデータの検出及び編集出力方式
JPH11296480A (ja) * 1998-04-06 1999-10-29 Hitachi Ltd 遠隔障害監視システム
JP2002078200A (ja) * 2000-08-22 2002-03-15 Toshiba Corp 監視制御装置及び記憶媒体
JP2002215431A (ja) * 2001-01-16 2002-08-02 Toshiba Corp 情報処理装置およびトレースログ情報出力方法

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0573366A (ja) * 1991-09-12 1993-03-26 Nec Corp 異常トレースデータの検出及び編集出力方式
JPH11296480A (ja) * 1998-04-06 1999-10-29 Hitachi Ltd 遠隔障害監視システム
JP2002078200A (ja) * 2000-08-22 2002-03-15 Toshiba Corp 監視制御装置及び記憶媒体
JP2002215431A (ja) * 2001-01-16 2002-08-02 Toshiba Corp 情報処理装置およびトレースログ情報出力方法

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2008226017A (ja) * 2007-03-14 2008-09-25 Ns Solutions Corp ログ情報生成装置、ログ情報管理装置、ログ情報生成方法、ログ情報管理方法及びプログラム
WO2012111167A1 (ja) * 2011-02-14 2012-08-23 株式会社日立製作所 トレース情報取得方法、コンピュータシステム及びプログラム
JP2013191070A (ja) * 2012-03-14 2013-09-26 Nomura Research Institute Ltd 監視装置
JP2017208037A (ja) * 2016-05-20 2017-11-24 Necフィールディング株式会社 監視装置、情報監視システム、監視装置の制御方法、及びプログラム

Similar Documents

Publication Publication Date Title
CN108196915B (zh) 基于应用容器引擎的代码处理方法、设备及存储介质
US8458681B1 (en) Method and system for optimizing the object code of a program
US7926040B2 (en) Method and system for timing code execution in a korn shell script
US8751872B2 (en) Separation of error information from error propagation information
CN112099880B (zh) 场景驱动的应用程序约减方法和系统
JP2007058265A (ja) ログ出力制御装置及びログ出力制御プログラム
CN114860654A (zh) 一种基于Flink数据流的Iceberg表Schema动态变更方法及系统
US6240529B1 (en) Debugging method and debugging apparatus for microcomputer system and recording medium on which debug program is recorded
JP2009258985A (ja) 情報処理装置およびエラー訂正方法
JP2009110318A (ja) 障害情報出力制御装置及びそれらに用いる障害情報出力制御方法並びにそのプログラム
CN110837467B (zh) 软件测试方法、装置以及系统
CN112416735A (zh) 一种应用程序检测方法、装置及终端设备、存储介质
JP2018160009A (ja) 障害情報処理プログラム、コンピュータ、障害通知方法、コンピュータシステム
CN115150464B (zh) 应用代理方法、装置、设备及介质
CN111581088B (zh) 基于Spark的SQL程序的调试方法、装置、设备及存储介质
CN114238220A (zh) 文件监控系统
US8756574B2 (en) Using reverse time for coverage analysis
AU776882B2 (en) Generating optimized computer data field conversion routines
JP2010026626A (ja) データを記録する方法、システム及びプログラム
US8490063B2 (en) Debugging extensible markup language
CN112732656A (zh) 一种基于hook技术的云存储的方法及装置
JP2010102446A (ja) ソフトウェア自動試験装置
JP2000267866A (ja) 2段式プロセスの終了状態獲得装置
CN112860224A (zh) 一种函数执行环境构建方法、装置、电子设备及存储介质
Cardin et al. Real-Time Java to Support the Device Property Model

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20080110

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20091126

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20100610

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20101013