(57)【要約】【課題】アプリケーションのプログラムコード内に処理階層情報を埋め込むことなく、ログ出力要求により要求された処理の処理階層をログ出力に反映させることで、ログ情報の可読性を向上させる。【解決手段】本発明のログ出力システムは、アプリケーションからログ出力要求を受信すると、受信したログ出力要求により要求された処理のログ情報を出力するログ出力システムであって、前記ログ出力要求により要求された処理の履歴を表す処理スタック情報を取得する処理スタック情報取得手段と、前記ログ出力要求により要求された処理の処理階層を、当該処理の処理スタック情報に基づいて求め、求めた処理階層を表す処理階層情報に基づいて、前記ログ情報の出力結果がツリー構造になるように前記ログ情報を編集するネスト編集処理手段と、前記編集されたログ情報を出力するログ出力制御手段と、を有する。【選択図】図１
2009205472.tif 000002
【特許請求の範囲】
【請求項１】
アプリケーションからログ出力要求を受信すると、受信したログ出力要求により要求された処理のログ情報を出力するログ出力システムであって、
前記ログ出力要求により要求された処理の履歴を表す処理スタック情報を取得する処理スタック情報取得手段と、
前記ログ出力要求により要求された処理の処理階層を、当該処理の処理スタック情報に基づいて求め、求めた処理階層を表す処理階層情報に基づいて、前記ログ情報の出力結果がツリー構造になるように前記ログ情報を編集するネスト編集処理手段と、
前記編集されたログ情報を出力するログ出力制御手段と、を有することを特徴とするログ出力システム。
【請求項２】
前記ネスト編集処理手段は、前記編集されたログ情報に前記処理階層情報を付加し、
前記ログ出力制御手段は、前記処理階層情報が付加されたログ情報を出力する、請求項１に記載のログ出力システム。
【請求項３】
前記ログ出力制御手段は、前記ログ情報に付加された処理階層情報が、ログ出力する処理階層の条件としてあらかじめ設定されている条件を満たす場合に、前記ログ情報を出力する、請求項１または２に記載のログ出力システム。
【請求項４】
前記ネスト編集処理手段は、
前記ログ情報を前記処理階層毎に分類し、前記処理階層毎に、当該処理階層における処理の処理経過時間と最終更新時間とを含む統計情報をテーブルに記録し、
前記テーブルの、前記ログ出力要求により要求された処理の処理階層の処理経過時間と最終更新時間とを更新し、更新した処理経過時間の情報を前記ログ情報にさらに付加する、請求項１から３のいずれか１項に記載のログ出力システム。
【請求項５】
前ログ出力システムは、Ｊａｖａ仮想マシンであり、
前記処理スタック情報取得手段は、ＪＶＭＴＩである、請求項１から４のいずれか１項に記載のログ出力システム。
【請求項６】
アプリケーションからログ出力要求を受信すると、受信したログ出力要求により要求された処理のログ情報を出力するログ出力システムが行うログ出力方法であって、
前記ログ出力要求により要求された処理の履歴を表す処理スタック情報を取得する取得ステップと、
前記ログ出力要求により要求された処理の処理階層を、当該処理の処理スタック情報に基づいて求める解析ステップと、
前記処理階層を表す処理階層情報に基づいて、前記ログ情報の出力結果がツリー構造になるように前記ログ情報を編集する編集ステップと、
前記編集されたログ情報を出力する出力ステップと、を有することを特徴とするログ出力方法。
【請求項７】
前記編集ステップでは、前記編集されたログ情報に前記処理階層情報を付加し、
前記出力ステップでは、前記処理階層情報が付加されたログ情報を出力する、請求項６に記載のログ出力方法。
【請求項８】
前記出力ステップでは、前記ログ情報に付加された処理階層情報が、ログ出力する処理階層の条件としてあらかじめ設定されている条件を満たす場合に、前記ログ情報を出力する、請求項６または７に記載のログ出力方法。
【請求項９】
前記ログ情報を前記処理階層毎に分類し、前記処理階層毎に、当該処理階層における処理の処理経過時間と最終更新時間とを含む統計情報をテーブルに記録する記録ステップをさらに有し、
前記解析ステップでは、前記テーブルの、前記ログ出力要求により要求された処理の処理階層の処理経過時間と最終更新時間とを更新し、
前記編集ステップでは、前記更新された処理経過時間の情報を前記ログ情報にさらに付加する、請求項６から８のいずれか１項に記載のログ出力方法。
【請求項１０】
アプリケーションからログ出力要求を受信すると、受信したログ出力要求により要求された処理のログ情報を出力するログ出力システムに、
前記ログ出力要求により要求された処理の履歴を表す処理スタック情報を取得する取得手順と、
前記ログ出力要求により要求された処理の処理階層を、当該処理の処理スタック情報に基づいて求める解析手順と、
前記処理階層を表す処理階層情報に基づいて、前記ログ情報の出力結果がツリー構造になるように前記ログ情報を編集する編集手順と、
前記編集されたログ情報を出力する出力手順と、を実行させることを特徴とするログ出力プログラム。
【請求項１１】
前記編集手順では、前記編集されたログ情報に前記処理階層情報を付加し、
前記出力手順では、前記処理階層情報が付加されたログ情報を出力する、請求項１０に記載のログ出力プログラム。
【請求項１２】
前記出力手順では、前記ログ情報に付加された処理階層情報が、ログ出力する処理階層の条件としてあらかじめ設定されている条件を満たす場合に、前記ログ情報を出力する、請求項１０または１１に記載のログ出力プログラム。
【請求項１３】
前記ログ出力システムに、
前記ログ情報を前記処理階層毎に分類し、前記処理階層毎に、当該処理階層における処理の処理経過時間と最終更新時間とを含む統計情報をテーブルに記録する記録手順をさらに実行させ、
前記解析手順では、前記テーブルの、前記ログ出力要求により要求された処理の処理階層の処理経過時間と最終更新時間とを更新し、
前記編集手順では、前記更新された処理経過時間の情報を前記ログ情報にさらに付加する、請求項１０から１２のいずれか１項に記載のログ出力プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ログ出力システム、ログ出力方法、およびログ出力プログラムに関する。
【背景技術】
【０００２】
アプリケーションが出力するログ情報は、障害解析や性能調査などを行う際に重要な情報となる。
【０００３】
そのため、アプリケーションは、ログファイルやログデータベースにログ情報を出力するためのログ出力インターフェースを有するのが一般的である。
【０００４】
以前は、アプリケーション毎に独自のログ出力インターフェースが作成されていたが、生産性の観点からログ出力インターフェースの共通化が進み、今日では、ＪａｖａのロギングＡＰＩやａｐａｃｈｅのｌｏｇ４ｊなどに代表されるプログラム言語によるログ出力インターフェースの標準化が成さている。
【０００５】
また、ログ出力インターフェースが標準化されたことで、標準化されたログ出力インターフェースをアプリケーションに提供し、アプリケーションから要求された処理のログ情報を出力するログ管理プログラムがオープンソースにより開発され、広く用いられるようになってきている。
【０００６】
通常、ログ管理プログラムでは、あらかじめ設定されたログ出力レベルに応じて、ログ情報の出力量を制御することが出来る。
【０００７】
しかし、アプリケーションサーバ上で動作する様な多数のオープンプログラムの組み合わせで動作するアプリケーションや、多くの開発者による大規模なアプリケーションなどでは、ログ管理プログラムに設定したログ出力レベルによっては期待以上に多くのログ情報が出力されてしまい、ログ情報の可読性が悪くなるという問題が起きている。
【０００８】
例えば、性能調査の観点から、ログ情報に基づいて性能上問題となっている処理を調査するには、調査対象の処理の開始と終了のログ情報に着目し、その処理にかかった時間を算出する。このとき、大量のログ情報が出力されてしまうと、調査対象の処理の開始と終了のログ情報の間に多くの他のログ情報が出力されることになり、ログ情報が１表示画面内に収まらず可読性が悪化し、調査が困難になってしまう。
【０００９】
この様なログの可読性の問題を解決するために、特許文献１には、アプリケーションのプログラムコード内にあらかじめ各処理の処理階層を表す処理階層情報を埋め込んでおき、ログ管理プログラムがログ出力要求により要求された処理のログ情報として処理階層情報を出力し、ログ表示プログラムが処理階層情報を用いてログ情報を可読性に優れたツリー構造に編集して表示する技術が記載されている。
【特許文献１】特開２００７−０６５７１８号公報
【発明の開示】
【発明が解決しようとする課題】
【００１０】
しかし、特許文献１に記載されている技術では、ログ情報を可読性に優れたツリー構造に編集するためには、その編集に用いる処理階層情報をアプリケーションのプログラムコード内にあらかじめ埋め込んでおく必要があり、既存のアプリケーションを対応させるにはプログラムコードを修正しなければならない。
【００１１】
また、プログラムコード内に処理階層情報を埋め込むため、アプリケーションの動作過程における各処理の処理階層を厳密に定義する必要があり面倒である。
【００１２】
そのため、アプリケーションのプログラムコード内に処理階層情報を埋め込むことなく、アプリケーションから要求された処理の処理階層をログ出力に反映させることで、ログ情報の可読性を向上させる必要があるという課題が存在する。
【００１３】
本発明の目的は、上述した課題を解決することが出来る、ログ出力システム、ログ出力方法、およびログ出力プログラムを提供することにある。
【課題を解決するための手段】
【００１４】
上記目的を達成するために本発明のログ出力システムは、
アプリケーションからログ出力要求を受信すると、受信したログ出力要求により要求された処理のログ情報を出力するログ出力システムであって、
前記ログ出力要求により要求された処理の履歴を表す処理スタック情報を取得する処理スタック情報取得手段と、
前記ログ出力要求により要求された処理の処理階層を、当該処理の処理スタック情報に基づいて求め、求めた処理階層を表す処理階層情報に基づいて、前記ログ情報の出力結果がツリー構造になるように前記ログ情報を編集するネスト編集処理手段と、
前記編集されたログ情報を出力するログ出力制御手段と、を有することを特徴とする。
【００１５】
上記目的を達成するために本発明のログ出力方法は、
アプリケーションからログ出力要求を受信すると、受信したログ出力要求により要求された処理のログ情報を出力するログ出力システムが行うログ出力方法であって、
前記ログ出力要求により要求された処理の履歴を表す処理スタック情報を取得する取得ステップと、
前記ログ出力要求により要求された処理の処理階層を、当該処理の処理スタック情報に基づいて求める解析ステップと、
前記処理階層を表す処理階層情報に基づいて、前記ログ情報の出力結果がツリー構造になるように前記ログ情報を編集する編集ステップと、
前記編集されたログ情報を出力する出力ステップと、を有することを特徴とする。
【００１６】
上記目的を達成するために本発明のログ出力プログラムは、
アプリケーションからログ出力要求を受信すると、受信したログ出力要求により要求された処理のログ情報を出力するログ出力システムに、
前記ログ出力要求により要求された処理の履歴を表す処理スタック情報を取得する取得手順と、
前記ログ出力要求により要求された処理の処理階層を、当該処理の処理スタック情報に基づいて求める解析手順と、
前記処理階層を表す処理階層情報に基づいて、前記ログ情報の出力結果がツリー構造になるように前記ログ情報を編集する編集手順と、
前記編集されたログ情報を出力する出力手順と、を実行させることを特徴とする。
【発明の効果】
【００１７】
本発明のログ出力システムによれば、アプリケーションから要求された処理の処理スタック情報に基づいて、要求された処理の処理階層を求め、求めた処理階層を表す処理階層情報に基づいて、ログ情報の出力結果がツリー構造になるようにログ情報を編集する。
【００１８】
したがって、アプリケーションのプログラムコード内に処理階層情報を埋め込むことなく、アプリケーションから要求された処理の処理階層を反映させたツリー構造のログ情報を出力して、ログ情報の可読性を向上させることが出来るという効果が得られる。
【発明を実施するための最良の形態】
【００１９】
以下に、本発明を実施するための最良の形態について図面を参照して説明する。
【００２０】
（第１の実施形態）
図１に、本発明の第１の実施形態のログ主力システムの構成を示す。
【００２１】
図１に示すように、本実施形態のログ出力システムは、アプリケーション１０２からログ出力要求を受信すると、受信したログ出力要求により要求された処理のログ情報を出力するものであり、アプリケーション１０２の動作環境であるアプリケーション実行基盤１０１上に、アプリケーション処理スタック情報取得手段１０４と、ログ管理手段１０３と、ログ設定情報１０７と、ログファイル１０８と、ログ表示手段１０９と、を有する。
【００２２】
アプリケーション処理スタック情報取得手段１０４は、ネスト編集処理手段１０５から指示された任意の処理の履歴を表す処理スタック情報を取得する。
【００２３】
例えば、アプリケーション１０２がＪａｖａアプリケーションである場合、アプリケーション実行基盤１０１は、Ｊａｖａ仮想マシンとなり、また、アプリケーション処理スタック情報取得手段１０４は、ＪＶＭＴＩ（Ｊａｖａ  Ｖｉｒｔｕａｌ  Ｍａｃｈｉｎｅ  Ｔｏｏｌ  Ｉｎｔｅｒｆａｃｅ）となる。
【００２４】
なお、ＪＶＭＴＩは、Ｊａｖａ仮想マシン上で動作するＪａｖａアプリケーションの状態や実行の監視、制御を行うためのインターフェースであり、Ｊａｖａアプリケーションの任意の処理の処理スタック情報を取得するインターフェースを有する。
【００２５】
ログ管理手段１０３は、ネスト編集処理手段１０５と、ログ出力制御手段１０６と、を有する。なお、ログ管理手段１０３は、アプリケーション１０２にログ出力インターフェースを提供し、アプリケーション１０２からそのログ出力インターフェースを介してログ出力要求を受信するものとする。なお、ログ出力要求には、ログ出力を要求する処理の識別情報と、その処理のログ情報とが含まれているものとする。
【００２６】
ネスト編集処理手段１０５は、アプリケーション１０２からログ出力要求を受信すると、アプリケーション処理スタック情報取得手段１０４を呼び出し、ログ出力要求により要求された処理の処理スタック情報を取得するよう指示する。
【００２７】
また、ネスト編集処理手段１０５は、ログ出力要求により要求された処理の処理階層を、アプリケーション処理スタック情報取得手段１０４にて取得された処理スタック情報に基づいて求め、求めた処理階層を表す処理階層情報に基づいて、ログ情報の出力結果がツリー構造になるようにログ情報を編集するとともに、編集されたログ情報に処理階層情報を付加する。
【００２８】
ログ設定情報１０７は、ログ管理手段１０３の動作を規定する情報であり、例えば、ログ情報を出力するログファイル１０８や、ログ情報を出力する処理階層の条件などの情報である。
【００２９】
ここで、処理階層の条件とは、ある処理階層よりも浅い処理階層の処理のログ情報のみを出力するなど、ログ情報の出力量を制御するための条件である。
【００３０】
ログ出力制御手段１０６は、ネスト編集処理手段１０５によりログ情報に付加された処理階層情報が、上記の処理階層の条件を満たすか否かを判定し、条件を満たす場合に、そのログ情報をログ設定情報１０７により規定されたログファイル１０８に出力する。
【００３１】
ログ表示手段１０９は、ネスト解析処理手段１１０を有し、ログファイル１０８からログ情報を取得し、ログ情報を処理階層毎に表示する。
【００３２】
ネスト解析処理手段１１０は、ネスト編集処理手段１０５によりログ情報に付加された処理階層情報に基づいて各ログ情報に対応する処理の処理階層を求める。
【００３３】
ここで、ネスト編集処理手段１０５において、ログ出力要求により要求された処理の処理階層を求める具体的な方法について説明する。ここでは、アプリケーション１０２がＪａｖａアプリケーションである場合を例に挙げて説明する。
【００３４】
アプリケーション１０２がＪａｖａアプリケーションである場合、アプリケーション処理スタック情報取得手段１０４では、例えば、図２に示すように、アプリケーション処理スタック情報取得手段１０４がネスト編集処理手段１０５から呼び出されるまでにアプリケーション実行基盤１０１上で行われた処理の各々について、処理名、処理階層、処理の説明が記述された処理スタック情報が取得される。
【００３５】
図２の例では、まず、アプリケーション実行基盤１０１の内部でＪａｖａアプリケーションを管理する不図示のアプリケーションサーバでアプリケーションコンテナ処理（処理階層１）が行われ、次に、Ｊａｖａアプリケーションのメイン処理であるａｐｍａｉｎ処理が呼び出されている（処理階層２）。次に、ａｐｍａｉｎ処理により、サブルーチンであるｓｕｂ１処理が呼び出され（処理階層３）、ｓｕｂ１処理により、さらにサブルーチンであるｓｕｂ２処理が呼び出されている（処理階層４）。その後、ｓｕｂ２処理により、ログ出力要求処理が呼び出され（処理階層５）、ログ出力要求処理により、処理スタック情報取得処理が呼び出されている（処理階層６）。
【００３６】
この様に、アプリケーション処理スタック情報取得手段１０４で取得された処理スタック情報には、アプリケーション実行基盤１０１上で行われた処理の処理階層が記述されているため、ネスト編集処理手段１０５は、ログ出力要求により要求された処理の処理階層を処理スタック情報に基づいて求めることが出来る。
【００３７】
ただし、アプリケーション処理スタック情報取得手段１０４で取得された処理スタック情報は、アプリケーション実行基盤１０１上で行われた全ての処理の履歴を表しており、図２の例では、アプリケーションサーバで行われた処理が処理階層１となっている。このことから、処理スタック情報に記述されている処理階層は、Ｊａｖａアプリケーションで行われた処理の処理階層と一致しない。
【００３８】
そのため、ネスト編集処理手段１０５は、ログ情報を編集するに際して、最初に、ログ出力要求により要求された処理のＪａｖａアプリケーションにおける処理階層を求める必要がある。
【００３９】
この場合、まず、ネスト編集処理手段１０５は、処理スタック情報が表す処理の中から、ログ出力要求により要求された処理を特定する。
【００４０】
図２の例では、ログ出力要求処理の直前に記述されている処理であるｓｕｂ２処理が、ログ出力要求により要求された処理として特定されたとする。
【００４１】
次に、ネスト編集処理手段１０５は、処理スタック情報に基づいてＪａｖａアプリケーションのメイン処理の処理階層を求める。
【００４２】
図２の例では、Ｊａｖａアプリケーションのメイン処理はａｐｍａｉｎ処理であるため、メイン処理の処理階層は２となる。
【００４３】
次に、ネスト編集処理手段１０５は、ログ出力要求により要求された処理の処理階層からメイン処理の処理階層−１の値を減じた値を、Ｊａｖａアプリケーションにおけるログ出力要求により要求された処理の処理階層とする。
【００４４】
図２の例では、メイン処理であるａｐｍａｉｎ処理の処理階層が２、ログ出力要求により要求された処理であるｓｕｂ２処理の処理階層が４であるため、Ｊａｖａアプリケーションにおけるｓｕｂ２処理の処理階層は４−（２−１）＝３と求まる。
【００４５】
その後、ネスト編集処理手段１０５は、処理階層情報に基づいて、ログ情報のネスト処理を行うことで、ログ出力結果がツリー構造になるようにログ情報を編集する。
【００４６】
次に、本実施形態のログ出力システムの全体動作について図３のフローチャートを参照して説明する。
【００４７】
図３に示すように、まず、ログ管理手段１０３は、ログ設定情報１０７を読み込み、初期化処理を行う（ステップＳ１１０）。これにより、ログ管理手段１０３は初期化され、アプリケーション１０２からのログ出力要求待ちの状態となる。
【００４８】
次に、ネスト編集処理手段１０５は、アプリケーション１０２からログ出力要求を受信すると（ステップＳ１２０）、アプリケーション処理スタック情報取得手段１０４にログ出力要求により要求された処理の処理スタック情報を取得するよう指示する。これを受けて、アプリケーション処理スタック情報取得手段１０４は、ログ出力要求により要求された処理の処理スタック情報を取得する（ステップＳ１３０）。
【００４９】
次に、ネスト編集処理手段１０５は、ログ出力要求により要求された処理の処理階層を、アプリケーション処理スタック情報取得手段１０４により取得された処理スタック情報に基づいて求め（ステップＳ１４０）、求めた処理階層を表す処理階層情報をログ情報に付加する（ステップＳ１５０）。
【００５０】
次に、ネスト編集処理手段１０５は、処理階層情報に基づいて、ログ情報のネスト処理を行うことで、ログ出力結果がツリー構造になるようにログ情報を編集する(ステップＳ１６０)。
【００５１】
次に、ログ出力制御手段１０６は、ネスト編集処理手段１０５によりログ情報に付加された処理階層情報が、ログ出力する処理階層の条件を満たすか否かを判定する（ステップＳ１７０）。
【００５２】
その後、ログ出力制御手段１０６は、ログ情報に付加された処理階層情報がログ出力する処理階層の条件を満たす場合に、そのログ情報をログファイル１０８に出力する（ステップＳ１８０）。
【００５３】
また、ユーザは、ログ表示手段１０９を用いてログファイル１０８を表示することで、ログ情報を処理階層毎に表示することが出来る。
【００５４】
次に、本実施形態のログ出力システムのログ出力結果について説明する。
【００５５】
ここでは、比較のために、図４に、通常のログ出力結果の一例を示し、図５に、本実施形態のログ出力システムのログ出力結果の一例を示す。
【００５６】
図４に示すように、通常のログ出力結果では、各ログ情報が同じ形式で出力されており、メイン処理のログ情報か、サブルーチンのログ情報か、が不明瞭で可読性が悪い。そのため、この様な形式で大量のログ情報が出力されると可読性の悪さが顕著になり、目視でプログラムの処理構造を意識しながらログ解析を行うことは困難となる。
【００５７】
一方、図５に示すように、本実施形態のログ出力結果は、図４に示した通常のログ出力結果と比較して、各ログ情報が処理階層情報であるＤｅｐｔｈを有する点と、ログメッセージがツリー構造に編集されている点と、が異なる。
【００５８】
そのため、メイン処理のログ情報かサブルーチンのログ情報かが明瞭であり、また、ログメッセージがツリー構造に編集されており、プログラムの処理構造を把握することが出来るため、可読性が向上しているのがわかる。
【００５９】
上述したように、本実施形態のログ出力システムにおいては、アプリケーション１０２から要求された処理の処理スタック情報に基づいて、要求された処理の処理階層を求め、求めた処理階層を表す処理階層情報に基づいて、ログ情報の出力結果がツリー構造になるようにログ情報を編集する。
【００６０】
したがって、アプリケーション１０２のプログラムコード内に処理階層情報を埋め込むことなく、アプリケーションから要求された処理の処理階層を反映させたツリー構造のログ情報を出力して、ログ情報の可読性を向上させることが出来るという効果が得られる。
【００６１】
（第２の実施形態）
図６に、本発明の第２の実施形態のログ出力システムの構成を示す。
【００６２】
図６に示すように、本実施形態のログ出力システムは、図１に示した第１の実施形態と比較して、ログ管理手段１０３が階層別統計情報テーブル１１１を有している点と、ネスト編集処理手段１０５の代わりにネスト編集処理手段１１２を設けている点と、が異なっている。他の構成要素については、第１の実施形態と同様であるため、図１と同様の符号を付し説明を省略する。
【００６３】
ネスト編集処理手段１１２は、第１の実施形態のネスト編集処理手段１０５が行う処理に加え、ログ出力要求により要求された処理のログ情報を処理階層毎に分類し、各処理階層における処理の処理経過時間や最終更新時間、実行回数などの統計情報を、階層別統計情報テーブル１１１に記録する。
【００６４】
また、ネスト編集処理手段１１２は、ログ出力要求を受信する度に、階層別統計情報テーブル１１１の、ログ出力要求により要求された処理の処理階層の処理経過時間や最終更新時間、実行回数などの統計情報を更新する。
【００６５】
さらに、ネスト編集処理手段１１２は、処理階層情報に加え、更新した処理経過時間の情報をログ情報に付加する。
【００６６】
次に、本実施形態のログ出力システムの全体動作について図７のフローチャートを参照して説明する。なお、以下では、第１の実施形態とは異なるネスト編集処理手段１１２の動作（ステップＳ１２０〜ステップＳ１６０）についてのみ説明を行い、他の動作については第１の実施形態の動作と同様のため、図３と同様の符号を付し説明を省略する。
【００６７】
図７に示すように、ネスト編集処理手段１１２は、アプリケーション１０２からログ出力要求を受信すると（ステップＳ１２０）、アプリケーション処理スタック情報取得手段１０４にログ出力要求により要求された処理の処理スタック情報を取得するよう指示する。これを受けて、アプリケーション処理スタック情報取得手段１０４は、ログ出力要求により要求された処理の処理スタック情報を取得する（ステップＳ１３０）。
【００６８】
次に、ネスト編集処理手段１１２は、ログ出力要求により要求された処理の処理階層を、アプリケーション処理スタック情報取得手段１０４により取得された処理スタック情報に基づいて求める（ステップＳ１４０）。
【００６９】
次に、ネスト編集処理手段１１２は、ログ出力要求により要求された処理の処理階層が、既に階層別統計情報テーブル１１１に記録されている処理階層よりも深いか否かを判定する（ステップＳ１４１）。
【００７０】
ネスト処理編集手段１１２は、ログ出力要求により要求された処理の処理階層が既に階層別統計情報テーブル１１１に記録されている処理階層よりも深い場合、階層別統計情報テーブル１１１に新たな処理階層のデータを追加し（ステップＳ１４４）、処理経過時間を０に、最終更新時間を現在時刻に更新する（ステップＳ１４５）。
【００７１】
一方、ネスト編集処理手段１１２は、ログ出力要求により要求された処理の処理階層が既に階層別統計情報テーブル１１１に記録されている処理階層の場合、階層別統計情報テーブル１１１からログ出力要求により要求された処理の処理階層の処理経過時間と最終更新時刻を取得する（ステップＳ１４２）。
【００７２】
次に、ネスト編集処理手段１１２は、取得した最終更新時間と現在時刻とを用いて前回の更新からの経過時間を算出し（ステップＳ１４３）、算出した経過時間に基づいて、階層別統計情報テーブル１１１のログ出力要求により要求された処理の処理階層の処理経過時間と最終更新時間とを更新する（ステップＳ１４５）。
【００７３】
その後、ネスト編集処理手段１１２は、ログ情報に、ステップＳ１４０で求めた処理階層情報と、ステップＳ１４５で更新した処理経過時間と、を付加し（ステップＳ１５０）、処理階層情報に基づいてログ情報のネスト処理を行うことでログ出力結果がツリー構造になるようにログ情報を編集する（ステップＳ１６０）。
【００７４】
次に、本実施形態のログ出力システムのログ出力結果について説明する。
【００７５】
図８に、本実施形態のログ出力システムのログ出力結果の一例を示す。
【００７６】
図８に示すように、本実施形態のログ出力システムのログ出力結果は、図４に示した第１の実施形態のログ主力システムのログ出力結果と比較して、処理階層情報であるＤｅｐｔｈの後ろに括弧で処理階層毎の処理経過時間を表示している点が異なる。
【００７７】
したがって、どの処理階層の処理で時間が掛かっているかを容易に知ることが出来るため、ログ出力時間の情報のみでは識別するのが難しい性能上問題になっている処理を容易に検出することが出来る。
【００７８】
上述したように、本実施形態のログ出力システムにおいては、階層別統計情報テーブル１１１に処理階層毎の処理経過時間などの統計情報を記録し、ログ出力要求を受信する度に階層別統計情報テーブル１１１のログ出力要求により要求された処理の処理階層の処理経過時間などの統計情報を更新し、処理階層情報に加え更新した処理経過時間をログ情報に付加する。
【００７９】
これにより、第１の実施形態と同様の効果に加え、性能上問題となっている処理を容易に検出することが出来るという効果が得られる。
【００８０】
なお、本発明のログ出力システムは、上述のように専用のハードウェアにより実現されるもの以外に、その機能を実現するためのプログラムを、ログ出力システムにて読み取り可能な記録媒体に記録して、この記録媒体に記録されたプログラムをログ出力システムに読み込ませ、実行するものであってもよい。ログ出力システムにて読み取り可能な記録媒体とは、フロッピーディスク、光磁気ディスク、ＣＤ−ＲＯＭ等の記録媒体、ログ出力システムに内蔵されるハードディスク装置等の記憶装置を指す。さらに、ログ出力システムにて読み取り可能な記録媒体は、インターネットを介してプログラムを送信する場合のように、短時間の間、動的にログ出力システム内部の揮発性メモリのように一定時間プログラムを保持しているものを含む。
【図面の簡単な説明】
【００８１】
【図１】本発明の第１の実施形態のログ出力システムの構成を示すブロック図である。
【図２】図１に示したアプリケーション処理スタック情報取得手段で取得された処理スタック情報の一例を示す図である。
【図３】図１に示したログ出力システムの全体動作を説明するフローチャートである。
【図４】通常のログ出力結果の一例を示す図である。
【図５】図１に示したログ出力システムのログ出力結果の一例を示す図である。
【図６】本発明の第２の実施形態のログ出力システムの構成を示すブロック図である。
【図７】図６に示したログ出力システムの動作を説明するフローチャートである。
【図８】図６に示したログ出力システムのログ出力結果の一例を示す図である。
【符号の説明】
【００８２】
１０１    アプリケーション実行基盤
１０２    アプリケーション
１０３    ログ管理手段
１０４    アプリケーション処理スタック情報取得手段
１０５，１１２    ネスト編集処理手段
１０６    ログ出力制御手段
１０７    ログ設定情報
１０８    ログファイル
１０９    ログ表示手段
１１０    ネスト解析処理手段
１１１    階層別統計情報テーブル
【図１】
2009205472.tif 000003
【図２】
2009205472.tif 000004
【図３】
2009205472.tif 000005
【図４】
2009205472.tif 000006
【図５】
2009205472.tif 000007
【図６】
2009205472.tif 000008
【図７】
2009205472.tif 000009
【図８】
2009205472.tif 000010