(57)【要約】【課題】状態遷移を用いることで、プログラムの実行時に出力されるトレースログを大量に出力しすぎないようにする。【解決手段】プログラムロジック部１６は、何らかの処理を行う。状態遷移ロジック部１４は、状態遷移図に従って状態遷移し、プログラムロジック部１６の状態を状態保持部１１に保持し、その状態の遷移に従ってログ出力要求を出す。ログ出力ロジック部１５は、状態遷移ロジック部１４から出されたログ出力要求に基づいてプログラムロジック部１６のトレースログをログ出力部１２に出力する。【選択図】図１
2005032085.tif 000002
【特許請求の範囲】
【請求項１】
何らかの処理を行うプログラムロジック部と、
状態遷移図に従って状態遷移し、前記プログラムロジック部の状態を状態保持部に保持し、その状態の遷移に従ってログ出力要求を出す状態遷移ロジック部と、
前記状態遷移ロジック部から出されたログ出力要求に基づいて前記プログラムロジック部のトレースログをログ出力部に出力するログ出力ロジック部と
を有することを特徴とする状態遷移を用いたプログラム実行時におけるトレースログ出力の抑止方式。
【請求項２】
プログラムが参照および更新する状態を保持する状態保持部と、
プログラムの動作トレースを出力するログ出力部と、
何らかの処理を行うプログラムロジック部と、
状態遷移図に従って状態遷移し、前記プログラムロジック部の状態を前記状態保持部に保持し、その状態の遷移に従ってログ出力要求を出す状態遷移ロジック部と、
前記状態遷移ロジック部から出されたログ出力要求に基づいて前記プログラムロジック部のトレースログを前記ログ出力部に出力するログ出力ロジック部と
を有することを特徴とする状態遷移を用いたプログラム実行時におけるトレースログ出力の抑止方式。
【請求項３】
前記プログラムロジック部が、ネットワークインターフェイスを経由してネットワーク通信をしながら何らかの処理を行うことを特徴とする請求項１または請求項２記載の状態遷移を用いたプログラム実行時におけるトレースログ出力の抑止方式。
【請求項４】
前記状態遷移図には、正常状態と、軽度の警告状態と、重度の警告状態と、異常状態との４つの状態が定義され、軽度の警告状態から正常状態への遷移時，軽度の警告状態から重度の警告状態への遷移時，および重度の警告状態から異常状態への遷移時にトレースログを出力することを特徴とする請求項１，請求項２または請求項３記載の状態遷移を用いたプログラム実行時におけるトレースログ出力の抑止方式。
【請求項５】
プログラムロジック部が何らかの処理を行う工程と、
状態遷移ロジック部が状態遷移図に従って状態遷移し、プログラムロジック部の状態を状態保持部に保持し、その状態の遷移に従ってログ出力要求を出す工程と、
ログ出力ロジック部が状態遷移ロジック部から出されたログ出力要求に基づいてプログラムロジック部のトレースログをログ出力部に出力する工程と
を含むことを特徴とする状態遷移を用いたプログラム実行時におけるトレースログ出力の抑止方法。
【請求項６】
前記プログラムロジック部が、ネットワークインターフェイスを経由してネットワーク通信をしながら何らかの処理を行うことを特徴とする請求項５記載の状態遷移を用いたプログラム実行時におけるトレースログ出力の抑止方法。
【請求項７】
前記状態遷移図には、正常状態と、軽度の警告状態と、重度の警告状態と、異常状態との４つの状態が定義され、軽度の警告状態から正常状態への遷移時，軽度の警告状態から重度の警告状態への遷移時，および重度の警告状態から異常状態への遷移時にトレースログを出力することを特徴とする請求項５または請求項６記載の状態遷移を用いたプログラム実行時におけるトレースログ出力の抑止方法。
【請求項８】
コンピュータを、何らかの処理を行うプログラムロジック部，状態遷移図に従って状態遷移し、前記プログラムロジック部の状態を状態保持部に保持し、その状態の遷移に従ってログ出力要求を出す状態遷移ロジック部，および前記状態遷移ロジック部から出されたログ出力要求に基づいてプログラムロジック部のトレースログをログ出力部に出力するログ出力ロジック部として動作させるためのプログラム。
【請求項９】
前記プログラムロジック部が、ネットワークインターフェイスを経由してネットワーク通信をしながら何らかの処理を行うことを特徴とする請求項８記載のプログラム。
【請求項１０】
前記状態遷移図には、正常状態と、軽度の警告状態と、重度の警告状態と、異常状態との４つの状態が定義され、軽度の警告状態から正常状態への遷移時，軽度の警告状態から重度の警告状態への遷移時，および重度の警告状態から異常状態への遷移時にトレースログを出力することを特徴とする請求項８または請求項９記載のプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はプログラム実行時におけるトレースログ出力の抑止方式および方法ならびにプログラムに関し、特に状態遷移を用いたプログラム実行時におけるトレースログ出力の抑止方式および方法ならびにプログラムに関する。
【背景技術】
【０００２】
すべてのエラー事象の発生に対して必ずログを出力すると、異常状態が継続した場合に大量のログが出力されてしまい、ログ出力部の限界容量を越えてしまうことがある。これを回避するための手法として、特許文献１や特許文献２で述べられているものがある。
【０００３】
特許文献１の手法では、同一の事象が連続して発生した場合に、その事象が前回と同一の事象かどうか、同一であれば何回目なのかを判断の基準としてログ出力を行っている。
【０００４】
また、特許文献２の手法では、全出力モードおよび部分出力モードというログ出力のモードを設定し、部分出力モードでは指定されたログサイズを超えない範囲で最新のログのみを出力している。
【特許文献１】特開平１−１１２４４１号公報（第２頁、図２）
【特許文献２】特開平６−１８７１９２号公報（第４−５頁、図３）
【発明の開示】
【発明が解決しようとする課題】
【０００５】
特許文献１の手法では、同一の事象が連続して発生した場合に、その事象が前回と同一の事象かどうか、同一であれば何回目なのかを判断の基準としてログ出力を行っているが、事象の連続発生具合のみを基準としており、どのようにしてその状態に到達したかがわからないという問題点があった。
【０００６】
また、特許文献２の手法では、全出力モードおよび部分出力モードというログ出力のモードを設定し、部分出力モードでは指定されたログサイズを超えない範囲で最新のログのみを出力しているが、「サイズ」という基準で一律に制限しており、状況に応じた出力ができないという問題点があった。
【０００７】
本発明の目的は、ログ用の状態遷移図に基づきトレースログの出力を制御する状態遷移を用いたプログラム実行時におけるトレースログ出力の抑止方式を提供することにある。
【課題を解決するための手段】
【０００８】
本発明の状態遷移を用いたプログラム実行時におけるトレースログ出力の抑止方式は、何らかの処理を行うプログラムロジック部と、状態遷移図に従って状態遷移し、前記プログラムロジック部の状態を状態保持部に保持し、その状態の遷移に従ってログ出力要求を出す状態遷移ロジック部と、前記状態遷移ロジック部から出されたログ出力要求に基づいてプログラムロジック部のトレースログをログ出力部に出力するログ出力ロジック部とを有することを特徴とする。
【０００９】
また、本発明の状態遷移を用いたプログラム実行時におけるトレースログ出力の抑止方式は、プログラムが参照および更新する状態を保持する状態保持部と、プログラムの動作トレースを出力するログ出力部と、何らかの処理を行うプログラムロジック部と、状態遷移図に従って状態遷移し、前記プログラムロジック部の状態を前記状態保持部に保持し、その状態の遷移に従ってログ出力要求を出す状態遷移ロジック部と、前記状態遷移ロジック部から出されたログ出力要求に基づいて前記プログラムロジック部のトレースログを前記ログ出力部に出力するログ出力ロジック部とを有することを特徴とする。
【００１０】
さらに、本発明の状態遷移を用いたプログラム実行時におけるトレースログ出力の抑止方式は、前記プログラムロジック部が、ネットワークインターフェイスを経由してネットワーク通信をしながら何らかの処理を行うことを特徴とする。
【００１１】
さらにまた、本発明の状態遷移を用いたプログラム実行時におけるトレースログ出力の抑止方式は、前記状態遷移図には、正常状態と、軽度の警告状態と、重度の警告状態と、異常状態との４つの状態が定義され、軽度の警告状態から正常状態への遷移時，軽度の警告状態から重度の警告状態への遷移時，および重度の警告状態から異常状態への遷移時にトレースログを出力することを特徴とする。
【００１２】
一方、本発明の状態遷移を用いたプログラム実行時におけるトレースログ出力の抑止方法は、プログラムロジック部が何らかの処理を行う工程と、状態遷移ロジック部が状態遷移図に従って状態遷移し、プログラムロジック部の状態を状態保持部に保持し、その状態の遷移に従ってログ出力要求を出す工程と、ログ出力ロジック部が状態遷移ロジック部から出されたログ出力要求に基づいてプログラムロジック部のトレースログをログ出力部に出力する工程とを含むことを特徴とする。
【００１３】
また、本発明の状態遷移を用いたプログラム実行時におけるトレースログ出力の抑止方法は、前記プログラムロジック部が、ネットワークインターフェイスを経由してネットワーク通信をしながら何らかの処理を行うことを特徴とする。
【００１４】
さらに、本発明の状態遷移を用いたプログラム実行時におけるトレースログ出力の抑止方法は、前記状態遷移図には、正常状態と、軽度の警告状態と、重度の警告状態と、異常状態との４つの状態が定義され、軽度の警告状態から正常状態への遷移時，軽度の警告状態から重度の警告状態への遷移時，および重度の警告状態から異常状態への遷移時にトレースログを出力することを特徴とする。
【００１５】
他方、本発明のプログラムは、コンピュータを、何らかの処理を行うプログラムロジック部，状態遷移図に従って状態遷移し、前記プログラムロジック部の状態を状態保持部に保持し、その状態の遷移に従ってログ出力要求を出す状態遷移ロジック部，および前記状態遷移ロジック部から出されたログ出力要求に基づいてプログラムロジック部のトレースログをログ出力部に出力するログ出力ロジック部として動作させることを特徴とする。
【００１６】
また、本発明のプログラムは、前記プログラムロジック部が、ネットワークインターフェイスを経由してネットワーク通信をしながら何らかの処理を行うことを特徴とする。
【００１７】
さらに、本発明のプログラムは、前記状態遷移図には、正常状態と、軽度の警告状態と、重度の警告状態と、異常状態との４つの状態が定義され、軽度の警告状態から正常状態への遷移時，軽度の警告状態から重度の警告状態への遷移時，および重度の警告状態から異常状態への遷移時にトレースログを出力することを特徴とする。
【００１８】
本発明の状態遷移を用いたプログラム実行時におけるトレースログ出力の抑止方式では、図１において、プログラム１０が図２の状態遷移図に基づいて動作しているとする。図２では、正常状態Ｓ０と、軽度の警告状態（警告１状態）Ｓ１と、重度の警告状態（警告２状態）Ｓ２と、異常状態Ｓ３との４つの状態が定義されている。いずれの状態でも、プログラム１０は何らかの動作を行い、その動作の結果をトレースログとして出力している。このとき、ある事象が発生したときに現在の状態によりトレースログの出力内容を変更する（あるいは出力そのものを止める）ことで、同様の事象が連続的に発生した状況でもトレースログの大量出力を回避できるようになる。
【００１９】
すなわち、状態遷移図と各遷移でどのようなトレースログを出すのかを予め定義しておくことで、プログラム１０の実行時のトレースログの出力抑止（制御）を可能にする。
【発明の効果】
【００２０】
第１の効果は、ログ出力部のコスト削減や限界性能向上である。その理由は、トレースログの出力を完全に制御できるためである。同じエラー事象に対してトレースログの出力を行う状態と行わない状態とを定義することで、これを実現できる。これにより、ログ出力部の資源の消費を抑えることができ、ログ出力部のコスト削減や限界性能向上に寄与する。
【００２１】
第２の効果は、障害の調査やプログラムのデバッグを容易にすることである。その理由は、トレースログの出力にプログラムの動作情報を多く含められるためである。本発明により状態を意識したトレースログの出力が可能なため、トレースログの出力からその当時の状態を知ることができる。状態を知ることができれば、そこに至る状態の経路を確定あるいは推測することができ、プログラムの状態を知る手がかりとなる。これは、プログラムのデバッグ時に有用な情報となる。
【発明を実施するための最良の形態】
【００２２】
状態遷移を用いることで、プログラムの実行時に出力されるトレースログを大量に出力しすぎないようにした。
【実施例】
【００２３】
図１を参照すると、本発明の実施例に係る状態遷移を用いたプログラム実行時におけるトレースログ出力の抑止方式は、計算機（図示せず）上で動作するプログラム１０と、プログラム１０が参照および更新する状態を保持する状態保持部１１と、プログラム１０の動作を示すトレースログを出力するログ出力部１２と、ネットワークインターフェイス１３とから構成される。
【００２４】
プログラム１０は、その主要な処理を行うプログラムロジック部１６と、状態遷移をつかさどる状態遷移ロジック部１４と、トレースログの出力をつかさどるログ出力ロジック部１５とから構成される。
【００２５】
それぞれの部は、次のように動作する。
【００２６】
プログラムロジック部１６は、ネットワークインターフェイス１３を経由してネットワーク通信をしながら何らかの処理を行う。この処理の過程で、プログラムロジック部１６は、状態遷移ロジック部１４とやり取りを行う。
【００２７】
状態遷移ロジック部１４は、例えば、図２に示すような状態遷移図の一例に従って状態遷移し、その状態を状態保持部１１に保持する。状態遷移ロジック部１４は、その状態の遷移に従ってログ出力ロジック部１５にログ出力要求を出す。
【００２８】
ログ出力ロジック部１５は、状態遷移ロジック部１４から出されたログ出力要求に基づいてトレースログをログ出力部１２に出力する。
【００２９】
ここで指す状態遷移図とは、プログラム１０に関するトレースログの出力要件に従って記述されたものであり、図２はあくまでも一例である。また、状態遷移図は、プログラム１０の主要な動作（正常系）を記述したものではなく、プログラム１０のトレースログの出力処理の動作を記述したものである。図２において、Ｓ０，Ｓ１，Ｓ２，Ｓ３は、正常状態，警告１状態，警告２状態，異常状態をそれぞれ示し、○記号および×記号は状態遷移に伴いトレースログの出力すること，および状態遷移に伴いトレースログを出力しないことをそれぞれ意味する。
【００３０】
状態保持部１１は、プログラム１０の状態遷移ロジック部１４からの参照要求および更新要求に従い、自身が保持している状態を状態遷移ロジック部１４に渡したり、状態を更新したりする動作を行う。
【００３１】
ログ出力部１２は、プログラム１０のログ出力ロジック部１５からの要求に応じて、プログラム１０のトレースログを外部に出力する。出力手段や媒体は問わない。
【００３２】
ネットワークインターフェイス１３は、プログラム１０のプログラムロジック部１６がネットワーク通信をするために利用可能なネットワークインターフェイスである。
【００３３】
次に、このように構成された実施例に係る状態遷移を用いたプログラム実行時におけるトレースログ出力の抑止方式の全体の動作について、図１および図２，ならびに図３のフローチャートを参照して詳細に説明する。
【００３４】
まず、全体的な動作として、プログラム１０は、ネットワークインターフェイス１３を通してネットワーク通信を行いながら何らかの処理を行うものとする。このとき、ネットワーク通信の成功および失敗により、図２に示すような状態遷移を行うとする。
【００３５】
次に、プログラム１０の詳細な動作を説明する。
【００３６】
プログラム１０のプログラムロジック部１６は、ネットワークインターフェイス１３を通してネットワーク越しに通信を行う（図３のステップＡ１）。
【００３７】
次に、プログラムロジック部１６は、その通信が成功か失敗かを判定する（ステップＡ２）。
【００３８】
続いて、プログラムロジック部１６は、この判定結果を状態遷移ロジック部１４に渡す。
【００３９】
状態遷移ロジック部１４は、プログラムロジック部１６から判定結果を受領し（ステップＡ３）、状態保持部１１から現在の状態を参照し（ステップＡ４）、判定結果と現在の状態とを用いて、状態遷移図（図２参照）に基づき状態遷移を行う（ステップＡ５）。このとき、状態遷移に伴うトレースログの出力が定義されていれば、ログ出力要求をログ出力ロジック部１５に出す（ステップＡ６）。
【００４０】
ログ出力要求を受けたログ出力ロジック部１５は、ログ出力部１２に対してトレースログの出力を行う（ステップＡ７）。
【００４１】
その後、プログラムロジック部１６は、処理を続行する。
【００４２】
このようにして、プログラム１０は、図２で定義された状態遷移を繰り返す。
【００４３】
このとき、主な状態遷移およびトレースログの出力状況は、下記のようになる。
【００４４】
（１） 通信が常に成功している場合、トレースログは出力されない。
【００４５】
（２） 通信が失敗と成功とを１回ずつ繰返す場合（失敗→成功→失敗→成功→…）は、成功時のみトレースログが出力される。
【００４６】
（３） 通信が失敗と成功とを２回ずつ繰返す場合（失敗→失敗→成功→成功→失敗→失敗→…）は、それぞれ２回目のみトレースログが出力される。
【００４７】
（４） 通信が３回以上連続で失敗した場合は、２回目の失敗のみトレースログが出力される。
【００４８】
（５） 通信が３回以上連続で失敗した後の最初の成功ではトレースログが出力される。
【００４９】
本発明の特徴は、プログラム１０の主要な処理の状態遷移とトレースログの出力処理の状態遷移とを分離したことにあり、これによりプログラム１０の動作とトレースログの出力動作とを分離することができる。また、異なる状態遷移図を定義することで、異なるトレースログの出力動作をさせることができる。これにより、トレースログの出力動作を細かく制御することが可能になる。
【００５０】
実施例によれば、同じエラー事象に対してトレースログの出力を行う状態と行わない状態とを定義することで、トレースログの出力の完全な制御を実現できることにより、ログ出力部１２の資源の消費を抑えることができ、ログ出力部１２のコスト削減や限界性能向上に寄与することができる。
【００５１】
また、トレースログの出力にプログラム１０の動作情報を多く含められるため、障害の調査やプログラム１０のデバッグを容易にすることができる。本実施例により状態を意識したトレースログの出力が可能なため、トレースログの出力からその当時の状態を知ることができる。状態を知ることができれば、そこに至る状態の経路を確定あるいは推測することができ、プログラム１０の状態を知る手がかりとなる。これはプログラム１０のデバッグ時に有用な情報となる。
【００５２】
次に、本発明の実施例の変形例について説明する。
【００５３】
まず、本発明は、図２に示す状態遷移図を定義することでトレースログの出力を抑制するため、トレースログの出力要求に応じてさまざまな状態遷移図を用いることができる。
【００５４】
また、トレースログの出力を行うプログラム１０の処理内容は問わないので、図１にあるネットワークインターフェイス１３は存在してもしなくてもよく、他にどのような構成要素が追加されてもよい。
【図面の簡単な説明】
【００５５】
【図１】本発明の実施例に係る状態遷移を用いたプログラム実行時におけるトレースログ出力の抑止方式の構成を示すブロック図である。
【図２】図１中のプログラムが動作する際に基づく状態遷移図である。
【図３】実施例に係る状態遷移を用いたプログラム実行時におけるトレースログ出力の抑止方式の動作を表すフローチャートである。
【符号の説明】
【００５６】
１０  プログラム
１１  状態保持部
１２  ログ出力部
１３  ネットワークインターフェイス
１４  状態遷移ロジック部
１５  ログ出力ロジック部
１６  プログラムロジック部
【図１】
2005032085.tif 000003
【図２】
2005032085.tif 000004
【図３】
2005032085.tif 000005