JP2014049056A - 情報処理装置、ログ出力方法およびログ出力プログラム - Google Patents

情報処理装置、ログ出力方法およびログ出力プログラム Download PDF

Info

Publication number
JP2014049056A
JP2014049056A JP2012193695A JP2012193695A JP2014049056A JP 2014049056 A JP2014049056 A JP 2014049056A JP 2012193695 A JP2012193695 A JP 2012193695A JP 2012193695 A JP2012193695 A JP 2012193695A JP 2014049056 A JP2014049056 A JP 2014049056A
Authority
JP
Japan
Prior art keywords
log
program
level
called
output
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.)
Granted
Application number
JP2012193695A
Other languages
English (en)
Other versions
JP5998764B2 (ja
Inventor
Hiroko Sakanashi
紘子 阪梨
Yuichiro Suzuki
雄一郎 鈴木
Minoru Nitta
稔 新田
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.)
Fujitsu Ltd
Original Assignee
Fujitsu 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 Fujitsu Ltd filed Critical Fujitsu Ltd
Priority to JP2012193695A priority Critical patent/JP5998764B2/ja
Priority to US14/016,978 priority patent/US20140067886A1/en
Publication of JP2014049056A publication Critical patent/JP2014049056A/ja
Application granted granted Critical
Publication of JP5998764B2 publication Critical patent/JP5998764B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/13File access structures, e.g. distributed indices
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
    • G06F11/3466Performance evaluation by tracing or monitoring
    • G06F11/3476Data logging
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0706Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment
    • G06F11/0721Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment within a central processing unit [CPU]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0766Error or fault reporting or storing
    • G06F11/0778Dumping, i.e. gathering error/state information after a fault for later diagnosis
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/362Software debugging
    • G06F11/366Software debugging using diagnostics
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/81Threshold
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/865Monitoring of software
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/88Monitoring involving counting

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Quality & Reliability (AREA)
  • Computer Hardware Design (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Health & Medical Sciences (AREA)
  • Biomedical Technology (AREA)
  • Debugging And Monitoring (AREA)

Abstract

【課題】小さなデータ量で障害発生時のログを出力できる可能性を高くする。
【解決手段】情報処理装置10は、複数のプログラムモジュールを含むプログラムを実行する。ログレベル設定部11は、複数のプログラムモジュールの1つが呼び出されたとき、そのプログラムモジュールの過去の実行回数に基づいて、ログに含める情報の詳細度を設定する。例えば、ログレベル設定部11は、呼び出されたプログラムモジュールの実行回数または実行頻度が所定のしきい値より低い場合、出力されるログの詳細度を高くする。ログ出力部12は、設定された詳細度に応じた情報を含むログを出力する。
【選択図】図1

Description

本発明は、情報処理装置、ログ出力方法およびログ出力プログラムに関する。
コンピュータなどの情報処理装置は、処理の実行状況を示すログを出力する機能を備える。出力されたログは、例えば、情報処理装置に障害が発生した場合に、その障害の発生原因の究明やプログラムの修正のために使用される。
また、出力するログのデータ量を抑制するために、必要なログのみを出力する方法が考えられている。例えば、プログラム内に事前に設定されたチェックポイントのログのみを出力する方法がある。
また、ログレベルを変更することで出力するログのデータ量を可変する情報処理装置もある。例えば、異常発生時に自動的にログレベルを切り替えるようにした情報処理装置がある。あるいは、プロセスの実行時にその複製プロセスを生成しておき、複製元のプロセスが異常終了すると、ログレベルを上げて複製プロセスを実行するようにした情報処理装置もある。
特開2009−205488号公報 特開2012−18512号公報
プログラム内のどの箇所が実行されたときに障害が発生するかを完全に予測することはできない。このため、事前に設定されたチェックポイントのログのみを出力する上記の方法では、実際に障害が発生したときにログを出力できないことがあるという問題がある。
1つの側面では、本発明は、小さなデータ量で障害発生時のログを出力できる可能性を高めた情報処理装置、ログ出力方法およびログ出力プログラムを提供することを目的とする。
1つの案では、複数のプログラムモジュールを含むプログラムを実行する情報処理装置が提供される。この情報処理装置は、設定部とログ出力部とを有する。設定部は、複数のプログラムモジュールの1つが呼び出されたとき、呼び出されたプログラムモジュールの過去の実行回数に基づいて、ログに含める情報の詳細度を設定する。ログ出力部は、設定された詳細度に応じた情報を含むログを出力する。
また、1つの案では、上記の情報処理装置の処理を実行するログ出力方法、および、上記の情報処理装置の処理をコンピュータに実行させるログ出力プログラムが提供される。
1態様によれば、情報処理装置、ログ出力方法およびログ出力プログラムにおいて、小さなデータ量で障害発生時のログを出力できる可能性が高くなる。
第1の実施の形態に係る情報処理装置の構成例および動作例を示す図である。 第2の実施の形態に係る情報処理装置のハードウェア構成例を示す図である。 情報処理装置の処理機能の構成例を示すブロック図である。 監視対象プログラムのソースコードの例を示す図である。 ツリー構造の例を示す図である。 実行状況管理テーブルに登録される情報の例を示す図である。 ログレベル設定部の処理例を示すフローチャートである。 ログ出力部の処理例を示すフローチャートである。 第3の実施の形態に係る情報処理システムのシステム構成例を示す図である。 ホストサーバの処理機能の構成例を示すブロック図である。 ログレベル設定部による問い合わせ処理例を示すフローチャートである。 実行状況管理テーブルに登録される情報の例を示す図である。 ログレベル設定処理例を示すフローチャートである。
以下、本発明の実施の形態について図面を参照して説明する。
〔第1の実施の形態〕
図1は、第1の実施の形態に係る情報処理装置の構成例および動作例を示す図である。図1に示す情報処理装置10は、所定のプログラムを実行するプロセッサ(図示せず)を備える。また、情報処理装置10は、プログラムの実行に伴い、そのプログラムが正常に実行されたかなどのプログラム実行状況を記述したログを出力する機能を備える。
情報処理装置10は、ログレベル設定部11およびログ出力部12を備える。ログレベル設定部11およびログ出力部12は、複数のプログラムモジュールを含むあるプログラム(以下、プログラムP1とする)が情報処理装置10で実行されているときのログ出力を制御するための処理を実行する。複数のプログラムモジュールのそれぞれは、例えば少なくとも1つの関数を含む。また、各プログラムモジュールは、他のプログラムモジュールの実行に応じて呼び出されて実行される。
なお、ログレベル設定部11およびログ出力部12の処理は、上記のプログラムP1とは別のログ出力プログラムを情報処理装置10のプロセッサが実行することで実現される。
ログレベル設定部11は、プログラムP1に含まれる複数のプログラムモジュールの1つが呼び出されたとき、呼び出されたプログラムモジュールの過去の実行回数に基づいてログレベルを設定する。ログレベルとは、例えば、出力するログに含める情報の詳細度を決定するためのパラメータであり、情報の詳細度が高いほど、出力されるログのデータ量が増加する。なお、ログレベルは、ログを出力するか否かを決定するためのパラメータであってもよい。
ログ出力部12は、ログレベル設定部11によって設定されたログレベルのログ(例えば、ログレベルが示す詳細度に応じた情報を含むログ)を出力する。図1では例として、ログ出力部12はログファイル20を生成し、ログファイル20の中に、設定されたログレベルのログを書き込んでいく。ログファイル20は、例えば、情報処理装置10が備える不揮発性記憶装置に格納される。
このような情報処理装置10によれば、ログレベルの可変機能を備えることで、必要に応じて出力するログのデータ量を小さくすることができるので、ログファイル20のデータ量を抑制することができる。これとともに、呼び出されたプログラムモジュールの実行回数に応じてログレベルが設定されることで、障害発生時において詳細度の高いログを出力できる可能性を高くすることができる。
例えば、ログレベルを変更する方法としては、プログラムP1に含まれるプログラムモジュールごとに、実行時に出力するログレベルをあらかじめ決めておく方法がある。しかし、プログラムP1に含まれるプログラムモジュールのうち、どのプログラムモジュールが実行されたときに障害が発生しやすいかを事前に予想することは難しい。このため、この方法では、実際に障害が発生したときに詳細度の高いログを出力できない可能性がある。
これに対して、情報処理装置10は、プログラムモジュールの実行回数という実際の実行状況に応じて、ログレベルを変更する。この処理によれば、情報処理装置10は、障害発生の解析結果に基づいて、実際に障害が発生しやすい実行状況になったときにログの詳細度を高くすることができる。
例えば、実行回数や実行頻度が高いプログラムモジュールよりも、実行回数や実行頻度が低いプログラムモジュールの方が、実行時に障害が発生しやすい。このため、情報処理装置10は、呼び出されたプログラムモジュールの実行回数に応じてログレベルを設定することで、ログファイル20のデータ量を抑制しつつ、必要な時点で詳細なログを出力できる可能性を高くすることができる。
以下、プログラムP1の実行時におけるログレベル設定部11およびログ出力部12の処理例を示す。この処理例では、情報処理装置10は、上記のプログラムP1に含まれるプログラムモジュールごとに、プログラムP1の実行が開始されてからの実行回数を計数する機能を備えるものとする。そして、計数された実行回数は図1に示す実行回数テーブル13に登録され、この実行回数テーブル13に登録された実行回数をログレベル設定部11が参照するものとする。
実行回数テーブル13には、プログラムモジュールを識別するためのモジュールIDと、実行回数とが対応付けられている。なお、実行回数テーブル13には、プログラムP1の実行開始からの単なる実行回数ではなく、例えば、所定時間ごとの実行回数(すなわち実行頻度)がプログラムモジュールごとに登録されてもよい。
まず、プログラムP1に含まれるあるプログラムモジュール(図示せず)の実行により、プログラムモジュールM1が呼び出されたとする。このとき、ログレベル設定部11は、実行回数テーブル13を参照して、プログラムモジュールM1についての過去の実行回数を判別し、その実行回数を所定のしきい値と比較する。
ここでは、実行回数がしきい値以上であったものとすると、ログレベル設定部11は、ログレベルBを設定する。ログ出力部12は、ログレベルBに応じたログ21をログファイル20に書き込む。なお、ログレベルBは、後述するログレベルAと比較して詳細度の低いログを出力するためのパラメータである。
次に、プログラムモジュールM1の実行により、プログラムモジュールM2が呼び出されたものとする。このとき、ログレベル設定部11は、実行回数テーブル13を参照して、プログラムモジュールM2についての過去の実行回数を判別し、その実行回数を前述のしきい値と比較する。
ここでは、実行回数がしきい値より低かったものとすると、ログレベル設定部11は、前述のログレベルBよりログの詳細度を高くするためのログレベルAを設定する。ログ出力部12は、ログレベルAに応じたログ22をログファイル20に書き込む。ログ22には、例えば、ログ21よりも多数の項目が記述される。
以上の処理により、情報処理装置10は、プログラムモジュールの実行状況に応じて、障害が発生しやすいと考えられる場合に、出力するログの詳細度を高くする。従って、情報処理装置10は、ログファイル20のデータ量を抑制しながらも、障害が発生したときに詳細なログを出力できる可能性を高くすることができる。
〔第2の実施の形態〕
図2は、第2の実施の形態に係る情報処理装置のハードウェア構成例を示す図である。情報処理装置100は、例えば、図2に示すようなコンピュータとして実現される。
情報処理装置100は、プロセッサ101によって装置全体が制御されている。プロセッサ101には、バス109を介して、RAM(Random Access Memory)102と複数の周辺機器が接続されている。プロセッサ101は、マルチプロセッサであってもよい。プロセッサ101は、例えばCPU(Central Processing Unit)、MPU(Micro Processing Unit)、DSP(Digital Signal Processor)、ASIC(Application Specific Integrated Circuit)、またはPLD(Programmable Logic Device)である。またプロセッサ101は、CPU、MPU、DSP、ASIC、PLDのうちの2以上の要素の組み合わせであってもよい。
RAM102は、情報処理装置100の主記憶装置として使用される。RAM102には、プロセッサ101に実行させるOS(Operating System)のプログラムやアプリケーションプログラムの少なくとも一部が一時的に格納される。また、RAM102には、プロセッサ101による処理に必要な各種データが格納される。
バス109に接続されている周辺機器としては、HDD(Hard Disk Drive)103、グラフィック処理装置104、入力インタフェース105、光学ドライブ装置106、機器接続インタフェース107および通信インタフェース108がある。
HDD103は、情報処理装置100の補助記憶装置として使用される。HDD103には、OSのプログラム、アプリケーションプログラム、および各種データが格納される。なお、補助記憶装置としては、SSD(Solid State Drive)などの他の種類の不揮発性記憶装置を使用することもできる。
グラフィック処理装置104には、モニタ104aが接続されている。グラフィック処理装置104は、プロセッサ101からの命令に従って、画像をモニタ104aの画面に表示させる。モニタ104aとしては、CRT(Cathode Ray Tube)を用いた表示装置や液晶表示装置などがある。
入力インタフェース105には、例えば、キーボード105aとマウス105bとが接続されている。入力インタフェース105は、キーボード105aやマウス105bから出力される信号をプロセッサ101に送信する。なお、マウス105bは、ポインティングデバイスの一例であり、他のポインティングデバイスを使用することもできる。他のポインティングデバイスとしては、タッチパネル、タブレット、タッチパッド、トラックボールなどがある。
光学ドライブ装置106は、レーザ光などを利用して、光ディスク106aに記録されたデータの読み取りを行う。光ディスク106aは、光の反射によって読み取り可能なようにデータが記録された可搬型の記録媒体である。光ディスク106aには、DVD(Digital Versatile Disc)、DVD−RAM、CD−ROM(Compact Disc−Read Only Memory)、CD−R(Recordable)/RW(ReWritable)などがある。
機器接続インタフェース107は、情報処理装置100に周辺機器を接続するための通信インタフェースである。例えば機器接続インタフェース107には、メモリ装置107aやメモリリーダライタ107bを接続することができる。メモリ装置107aは、機器接続インタフェース107との通信機能を搭載した記録媒体である。メモリリーダライタ107bは、メモリカード107cへのデータの書き込み、またはメモリカード107cからのデータの読み出しを行う装置である。メモリカード107cは、カード型の記録媒体である。
通信インタフェース108は、ネットワーク108aなどを介して他の装置との間でデータの送受信を行う。
以上のようなハードウェア構成によって、情報処理装置100の処理機能を実現することができる。なお、図1に示した情報処理装置10も、図2に示したハードウェアを有するコンピュータとして実現することができる。
図3は、情報処理装置の処理機能の構成例を示すブロック図である。情報処理装置100は、アプリケーション処理部110、ログレベル設定部121およびログ出力部122を備える。また、情報処理装置100の記憶装置には、ノード情報131、実行状況管理テーブル132、制御モード133、ログレベル134およびログファイル140が記録される。
アプリケーション処理部110は、ログレベル設定部121およびログ出力部122による実行監視対象とされる所定のアプリケーションプログラム(以下、監視対象プログラムと呼ぶ)が、情報処理装置100のプロセッサ101によって実行されることによって起動する。そして、アプリケーション処理部110の処理は、監視対象プログラムがプロセッサ101によって実行されることで実現される。
一方、ログレベル設定部121およびログ出力部122の処理は、監視対象プログラムの実行を監視するとともにログを出力するための実行監視プログラムが、情報処理装置100のプロセッサ101によって実行されることで実現される。
ログレベル設定部121は、アプリケーション処理部110の実行状況を監視し、その実行状況に応じて、出力するログの詳細度を示すログレベル134を設定する。ログレベル134は、例えば、情報処理装置100のRAM102に記録される。
ノード情報131には、監視対象プログラムを静的解析して得られたツリー構造を示す情報が、あらかじめ登録されている。ログレベル設定部121は、ノード情報131に基づき、ツリー構造に含まれるノードを単位として、アプリケーション処理部110の実行状況を監視する。
具体的には、ログレベル設定部121は、呼び出し元ノードと呼び出し先ノードとの組み合わせである「処理ルート」ごとに実行回数を計数し、実行回数を示す情報を実行状況管理テーブル132に登録する。ログレベル設定部121は、実行状況管理テーブル132に基づき、実行された処理ルートについての実行回数が所定のしきい値より低いとき、ログレベル134を高くする。
制御モード133は、ログレベル134を設定するための動作モードを示し、ログレベル設定部121によって設定される。本実施の形態では、制御モード133は、ログレベル134を自動的に変更するレベル自動変更モードのオン/オフを示す。レベル自動変更モードがオフの状態では、ログレベル134は所定のレベルに固定化される。ログレベル設定部121は、アプリケーション処理部110の実行が開始された直後の期間では、レベル自動変更モードをオフにする。
ログ出力部122は、設定されたログレベル134に応じたログを、ログファイル140に書き込む。ログファイル140は、ログ出力部122によって作成されて、例えば、情報処理装置100のHDD103、あるいは情報処理装置100の外部の記憶装置に格納される。
図4は、監視対象プログラムのソースコードの例を示す図である。また、図5は、ツリー構造の例を示す図である。
図4に示す監視対象プログラムは、静的解析によって、図5に示すような10個のノードN1〜N10を有するツリー構造で表すことができる。ここで、図4に示すように、ノードN1〜N10のそれぞれは、少なくとも1つの関数を含むプログラムモジュールである。そして、ルートノードであるノードN1以外のノードN2〜N10は、それぞれ他のノードの実行によって呼び出されて実行される。
図3に示したノード情報131には、監視対象プログラムと、ツリー構造に含まれる各ノードとの対応を示す情報が登録される。例えば、ノード情報131には、監視対象プログラムのソースコードにおける、各ノードの先頭の行番号が登録される。このようなノード情報131により、ログレベル設定部121は、監視対象プログラムの実行中においてどのノードがどのノードから呼び出されたかを判別することができる。
また、図5において下線を付して示す数字は、呼び出し元ノードと呼び出し先ノードとの組み合わせ(処理ルート)の実行回数を示す。例えば図5において、ノードN1からノードN2への処理ルートの実行回数(すなわち、ノードN1の実行によってノードN2が呼び出された回数)は「3」である。ここで言う実行回数とは、監視対象プログラムの実行が開始されてから現在までに処理ルートが実行された回数である。このような処理ルートごとの実行回数は、ログレベル設定部121によって計数される。
図6は、実行状況管理テーブルに登録される情報の例を示す図である。実行状況管理テーブル132には、ログレベル設定部121によって計数された処理ルートごとの実行回数が登録される。図6において、横方向に対応付けられたレコードが1つの処理ルートに対応する情報を示す。そして、実行状況管理テーブル132には、監視対象プログラムに基づくツリー構造に含まれるすべての処理ルートに対応するレコードが設けられる。
図6において、「呼び出し元ノード」の欄には、呼び出し元のノードの識別番号が登録され、「呼び出し先ノード」の欄には、呼び出し先のノードの識別番号が登録される。「実行回数」の欄には、対応する処理ルートの実行回数の計数値が、ログレベル設定部121によって登録される。
「ステータス」の欄には、対応する実行回数の値が所定のしきい値以上であるか否かを示すフラグ情報が、ログレベル設定部121によって登録される。本実施の形態では、ステータスの初期値を「False」とし、実行回数がしきい値以上である場合のステータスを「True」、実行回数がしきい値より低い場合のステータスを「False」とする。
なお、実行状況管理テーブル132には、処理ルートごとに対応付けられる情報として、実行回数の代わりに実行頻度(直近の単位時間における実行回数)が登録されてもよい。この場合、実行頻度が所定のしきい値以上である場合にステータスは「True」とされ、実行頻度がしきい値より低い場合にステータスは「False」とされる。
ところで、プログラムが実行されているとき、頻繁に実行される処理ルートよりも、通常はあまり実行されない処理ルートが実行されたときの方が、障害が発生する可能性が高い。また、通常はあまり実行されない処理ルートの実行時に発生した障害は、テストによって再現することが困難であることが多いため、このような障害の発生原因を究明する際の難易度が高い。
このような観点から、ログレベル設定部121は、処理ルートごとの実行回数の計数結果に基づき、実行回数または実行頻度がしきい値より低い処理ルートが実行されたときに、ログレベルを高くする。これにより、ログファイル140のデータサイズを削減することを可能にしつつ、障害発生時に詳細なログを記録できる確率を高くすることができる。また、原因究明の難易度の高い障害の発生時において、詳細なログを記録できるようになり、原因究明の作業効率を高くすることができる。
図7は、ログレベル設定部の処理例を示すフローチャートである。この図7の処理は、例えば、監視対象プログラムの実行が開始されてアプリケーション処理部110が起動したときに実行される。
なお、この図7では例として、ログレベル134を高レベルと低レベルの2段階に設定可能であるものとする。例えば、log4j(Apache Software Foundationの商標)で規定されたログレベルのうち、“debug”レベル(高レベル)と“information”レベル(低レベル)のいずれかに設定可能とする。
[ステップS11]ログレベル設定部121は、レベル自動変更モードをオフにして初期化する。
[ステップS12]ログレベル設定部121は、監視対象プログラムの実行を監視し、あるノードから次のノードが呼び出されたかを判定する。次のノードが呼び出された場合にはステップS14の処理が実行され、次のノードが呼び出されていない場合にはステップS13の処理が実行される。
[ステップS13]ログレベル設定部121は、監視対象プログラムの実行が終了したかを判定する。実行が終了した場合、ログレベル設定部121(およびログ出力部122)の処理が終了する。一方、実行が終了していない場合、ステップS12の処理が実行される。
[ステップS14]ログレベル設定部121は、実行状況管理テーブル132において、該当処理ルート(すなわち、ステップS12における呼び出し元ノードおよび呼び出し先ノードに対応する処理ルート)に対応付けられた実行回数を「1」だけインクリメントする。また、ログレベル設定部121は、インクリメント後の実行回数を所定のしきい値と比較し、その比較結果に応じて、実行回数に対応付けられたステータスを必要に応じて更新する。ログレベル設定部121は、実行回数がしきい値以上である場合にはステータスを「False」にし、実行回数がしきい値より小さい場合にはステータスを「True」にする。
[ステップS15]ログレベル設定部121は、現在、レベル自動変更モードがオンであるかを判定する。レベル自動変更モードがオンである場合、ステップS16の処理が実行され、オフである場合、ステップS19の処理が実行される。
[ステップS16]ログレベル設定部121は、実行状況管理テーブル132において、該当処理ルートに対応付けられたステータスが「True」か「False」かを判定する。ステータスが「True」の場合、ステップS18の処理が実行され、ステータスが「False」の場合、ステップS17の処理が実行される。
[ステップS17]ログレベル設定部121は、ログレベル134を高レベルに設定する。この後、ステップS12の処理が実行される。
[ステップS18]ログレベル設定部121は、ログレベル134を低レベルに設定する。この後、ステップS12の処理が実行される。
なお、ログレベル134を3段階以上に設定可能とする場合には、例えば、ステップS18で設定されるログレベル134より、ステップS17で設定されるログレベル134が高くされる(すなわち、ログのデータ量が大きくなるように設定される)ようにすればよい。例えば、ログレベル134が高いほど出力されるログの詳細度が上がるものとした場合、ステップS17では、所定段階以上のログレベル134が設定され、ステップS18では、所定段階より低いログレベル134が設定される。
[ステップS19]ログレベル設定部121は、実行状況管理テーブル132に登録された処理ルートのうち、ステータスが「True」である処理ルートが所定割合以上であるかを判定する。所定割合以上である場合、ステップS20の処理が実行され、所定割合未満である場合、ステップS18の処理が実行される。
[ステップS20]ログレベル設定部121は、レベル自動変更モードをオフからオンに更新する。
上記の図7の処理によれば、ログレベル設定部121は、あるノードから次のノードが呼び出されたとき、該当処理ルートの実行回数がしきい値以上であれば、ログレベル134を低レベルにして、出力されるログのデータ量を抑制する(ステップS18)。一方、ログレベル設定部121は、該当処理ルートの実行回数がしきい値より小さい場合には、ログレベル134を高レベルにする(ステップS17)。これにより、障害が発生しやすい処理ルートの実行時において出力されるログの詳細度が高くなり、障害発生時に詳細なログを記録できる可能性を高くすることができる。
ただし、ログレベル設定部121は、アプリケーション処理部110の処理が開始された初期期間においては、実行状況管理テーブル132に登録された実行回数から、各処理ルートが頻繁に実行されるものか否かを正確に判定できない。初期期間においては、各処理ルートの実行回数の値は全体として小さくなり、また、実行回数がしきい値以上になる処理ルートが現れたとしても、その数は少数になる。このため、初期期間において実行回数を基にログレベルが決定される場合には、実行された処理ルートが本当に頻繁に実行されるものか否かに関係なく、大量のログが出力される可能性がある。
そこで、ログレベル設定部121は、ステータスが「True」である処理ルートが所定割合未満である場合には(ステップS19:No)、レベル自動変更モードをオフのままにして、ログレベル134の設定を低レベルに固定する(ステップS18)。このような処理により、初期期間においてむやみに大量のログが出力される事態を回避できる。
なお、前述のように、実行状況管理テーブル132には、実行回数の代わりに実行頻度が登録されてもよい。この場合、図7の処理は、ステップS14において実行回数の代わりに実行頻度が更新されるように変形される。
図8は、ログ出力部の処理例を示すフローチャートである。この図8の処理は、図7と同様に、例えば、監視対象プログラムの実行が開始されてアプリケーション処理部110が起動したときに実行される。
[ステップS31]ログ出力部122は、監視対象プログラムの実行が開始されると、ログファイル140を作成して、情報処理装置100のHDD103に格納する。これ以後、ログ出力部122は、監視対象プログラムの実行を監視する。
[ステップS32]ログ出力部122は、ログレベル設定部121によって設定されたログレベル134を、RAM102から読み込む。
[ステップS33]ログ出力部122は、読み込んだログレベル134に応じたログを、ログファイル140に書き込む。ログには、例えば、日時、ログレベル、監視対象プログラムの実行に伴って計算されたデータの値、処理が正常に実行されたか否かを示す情報などが含まれる。そして、同じ処理に関するログを比較した場合、ログレベル134が高いほど出力されるログのデータ量が大きくなる。例えば、ログレベル134が高いほど、ログに含まれる項目の数が多くなる。
ステップS32,S33の処理は、例えば、ノードが実行されるたびに行われるなど、所定のタイミングで繰り返し実行される。
〔第3の実施の形態〕
第3の実施の形態では、図1に示した情報処理装置10を、仮想マシンを実現するホストサーバとして実現した場合の例を示す。図9は、第3の実施の形態に係る情報処理システムのシステム構成例を示す図である。
情報処理システム200は、ホストサーバ201と、複数のクライアント202と、管理端末203とを含む。ホストサーバ201と各クライアント202、および、ホストサーバ201と管理端末203とは、ネットワーク204によって相互に接続されている。なお、ホストサーバ201、各クライアント202および管理端末203は、いずれも図2に示したようなハードウェア構成を有するコンピュータとして実現可能である。
ホストサーバ201は、Java(Oracle Corporationの登録商標)仮想マシンを構築し、Java仮想マシン上で各種のアプリケーションプログラムを実行することで、各クライアント202に対して各種のサービスを提供する。
クライアント202は、ホストサーバ201が提供するサービスを受けるユーザによって操作される端末装置であり、ユーザの操作に応じてホストサーバ201にアクセスする。
管理端末203は、ホストサーバ201の管理者によって操作される端末装置である。管理端末203は、例えば、管理者からの操作に応じてホストサーバ201にアクセスし、ホストサーバ201に記録されたログファイルを読み出して、表示装置(図示せず)に表示する。管理者は、表示されたログファイルの内容を基に、ホストサーバ201において発生した障害に対処することができる。
図10は、ホストサーバの処理機能の構成例を示すブロック図である。なお、図10では、図3に対応する構成要素には同じ符号を付して示し、その説明を省略する。
ホストサーバ201は、APS(Application Server)処理部220およびJVM(Java Virtual Machine)処理部230を備える。また、ホストサーバ201の記憶装置には、アプリケーションプログラム210、ノード情報131a、実行状況管理テーブル132a、制御モード133、ログレベル134およびログファイル140が記録される。
アプリケーションプログラム210は、第2の実施の形態における監視対象プログラムに対応するものである。アプリケーションプログラム210は、Java仮想マシン上で実行される。
JVM処理部230の処理は、ホストサーバ201のプロセッサ(図示せず)がJVMプログラムを実行することで実現される。JVM処理部230は、Java仮想マシンとしての処理を実行する。JVM処理部230は、APS処理部220を介してアプリケーションプログラム210のソースコードを取得して実行し、アプリケーションプログラム210に従ったJava仮想マシンとしての処理を行う。
APS処理部220の処理は、ホストサーバ201のプロセッサがAPSプログラムを実行することで実現される。APS処理部220は、Java仮想マシン上でのアプリケーションプログラム210の実行状況を監視し、ログを出力する。APS処理部220は、ログレベル設定部121aおよびログ出力部122を有している。
ログレベル設定部121aは、図3におけるログレベル設定部121と同様に、アプリケーションプログラム210を静的解析して得られるツリー構造のノードを単位として、アプリケーションプログラム210の実行を監視する。また、ノード情報131aには、アプリケーションプログラム210と、ツリー構造に含まれる各ノードとの対応を示す情報が登録される。ここで、本実施の形態におけるノードはJavaメソッドであり、ログレベル設定部121aは、ノード情報131aに基づき、Javaメソッドを単位としてアプリケーションプログラム210の実行を監視する。Javaメソッドは、アプリケーションプログラム210に含まれるプログラムモジュールである。
ログレベル設定部121aは、監視対象であるアプリケーションプログラム210の実行状況に応じて、出力するログの詳細度を示すログレベル134を出力する。ただし、ログレベル設定部121aは、図3におけるログレベル設定部121とは異なり、JVM処理部230が備えるJavaメソッドの実行管理機能を利用して、アプリケーションプログラム210の実行状況を判別してログレベル134を設定する。
JVM処理部230は、アプリケーションプログラム210を実行する際に、次のような2つの方式を用いる。1つは、アプリケーションプログラム210を変換して得られる中間コード(バイトコード)を逐次解釈して実行するインタープリタ方式である。もう1つは、中間コードを所定範囲ごとにネイティブコードにコンパイルしてから実行するJIT(Just In Time)コンパイル方式である。
JVM処理部230は、このようなJITコンパイル方式でアプリケーションプログラム210を実行するJITコンパイル部231を備える。本実施の形態において、JITコンパイル部231は、中間コードをJavaメソッドごとにネイティブコードに変換する。
JVM処理部230は、基本的にはインタープリタ方式でアプリケーションプログラム210を実行する。その一方で、JITコンパイル部231は、Javaメソッドごとに実行回数を計数することなどにより、各Javaメソッドの実行状況を監視する。JITコンパイル部231は、実行状況の解析結果に基づいて、ネイティブコード232に変換すべきJavaメソッドを判別する。基本的に、繰り返し実行される数が多いJavaメソッドほど、JITコンパイル方式を用いる方が実行速度が高くなる。このため、JITコンパイル部231は、例えば、実行回数または実行頻度がしきい値以上になったJavaメソッドを、ネイティブコード232に変換すべきJavaメソッドと判定する。
そして、JITコンパイル部231は、ネイティブコード232に変換すべきと判定されたJavaメソッドが呼び出されたとき、そのJavaメソッドをネイティブコード232に変換して実行する。また、JITコンパイル部231は、変換したネイティブコード232をホストサーバ201の記憶装置(例えばRAM)に格納しておき、それ以後、ネイティブコード232に変換済みのJavaメソッドが呼び出された場合には、変換済みのネイティブコード232を実行する。なお、JITコンパイル部231は、ネイティブコード232に変換すべきと判定されたJavaメソッドを、そのJavaメソッドが次に呼び出される前にネイティブコード232に変換してRAMに格納しておいてもよい。
ログレベル設定部121aは、各Javaメソッドがネイティブコード232に変換されたかを問い合わせ、その問い合わせの結果を実行状況管理テーブル132aに登録する。そして、ログレベル設定部121aは、Javaメソッドが呼び出されたとき、呼び出されたJavaメソッドがネイティブコード232に変換されていない場合に、そのJavaメソッドは頻繁に実行されていないと判定して、ログレベル134を高くする。
ログ出力部122は、図3のログ出力部122と同様に、設定されたログレベル134に応じたログを、ログファイル140に書き込む。
図11は、ログレベル設定部による問い合わせ処理例を示すフローチャートである。ログレベル設定部121aは、図11の処理を、例えば一定時間ごとに繰り返し実行する。
[ステップS41]ログレベル設定部121aは、JITコンパイル部231に対して、Javaメソッドごとのネイティブコード232への変換状況を問い合わせる。例えば、Oracle CorporationのJVMプログラムである“Java HotSpot Server VM”では、“PrintCompilation”コマンドを用いて、ネイティブコード232へのコンパイル要求が発生したJavaメソッドの識別名を取得することができる。
[ステップS42]ログレベル設定部121aは、JITコンパイル部231から、ネイティブコード232に変換されたJavaメソッドの識別名を取得する。
[ステップS43]ログレベル設定部121aは、実行状況管理テーブル132aに対して、ネイティブコード232に変換されたか否かを示す情報をJavaメソッドごとに登録して、実行状況管理テーブル132aを更新する。
図12は、実行状況管理テーブルに登録される情報の例を示す図である。実行状況管理テーブル132aには、アプリケーションプログラム210のツリー構造に含まれるノードごとにステータスが登録される。各ノードはJavaメソッドに対応している。ステータスは、対応するノードがネイティブコード232に変換されたか否かを示す。本実施の形態では、ステータスの初期値を「False」とし、ネイティブコード232に変換された場合のステータスを「True」、変換されていない場合のステータスを「False」とする。
図13は、ログレベル設定処理例を示すフローチャートである。この図13の処理は、例えば、アプリケーションプログラム210の実行が開始されたときに実行される。なお、この図13では図7と同様に、ログレベル134を高レベルと低レベルの2段階に設定可能であるものとする。
[ステップS51]ログレベル設定部121aは、レベル自動変更モードをオフにして初期化する。
[ステップS52]ログレベル設定部121aは、アプリケーションプログラム210の実行を監視し、あるノードから次のノードが呼び出されたかを判定する。ここで言うノードとはJavaメソッドに対応する。次のノードが呼び出された場合にはステップS54の処理が実行され、次のノードが呼び出されていない場合にはステップS53の処理が実行される。
[ステップS53]ログレベル設定部121aは、アプリケーションプログラム210の実行が終了したかを判定する。実行が終了した場合、ログレベル設定部121a(およびログ出力部122)の処理が終了する。一方、実行が終了していない場合、ステップS52の処理が実行される。
[ステップS54]ログレベル設定部121aは、現在、レベル自動変更モードがオンであるかを判定する。レベル自動変更モードがオンである場合、ステップS55の処理が実行され、オフである場合、ステップS58の処理が実行される。
[ステップS55]ログレベル設定部121aは、実行状況管理テーブル132aにおいて、該当ノード(すなわち、ステップS52において呼び出されたノード)に対応付けられたステータスが「True」か「False」かを判定する。ステータスが「True」の場合、ステップS57の処理が実行され、ステータスが「False」の場合、ステップS56の処理が実行される。
[ステップS56]ログレベル設定部121aは、ログレベル134を高レベルに設定する。この後、ステップS52の処理が実行される。
[ステップS57]ログレベル設定部121aは、ログレベル134を低レベルに設定する。この後、ステップS52の処理が実行される。
[ステップS58]ログレベル設定部121aは、実行状況管理テーブル132aに登録されたノードのうち、ステータスが「True」であるノードが所定割合以上であるかを判定する。所定割合以上である場合、ステップS59の処理が実行され、所定割合未満である場合、ステップS57の処理が実行される。
[ステップS59]ログレベル設定部121aは、レベル自動変更モードをオフからオンに更新する。
上記の図13によれば、ログレベル設定部121aは、ノードが呼び出されたとき、そのノードがネイティブコード232に変換されている場合には、ログレベル134を低レベルにして、出力されるログのデータ量を抑制する(ステップS57)。一方、ログレベル設定部121aは、呼び出されたノードがネイティブコード232に変換されていない場合には、そのノードは頻繁に実行されてはいないと判定して、ログレベル134を高レベルにする(ステップS56)。これにより、障害が発生しやすい処理ルートの実行時において出力されるログの詳細度が高くなり、障害発生時に詳細なログを記録できる可能性を高くすることができる。
また、ログレベル設定部121aは、アプリケーションプログラム210の実行が開始された初期期間においては、ノードがネイティブコード232に変換されたか否かという情報から、各処理ルートが頻繁に実行されるものか否かを正確に判定できない。そこで、ログレベル設定部121aは、ステータスが「True」であるノードが所定割合未満である場合には(ステップS58:No)、レベル自動変更モードをオフのままにして、ログレベル134の設定を低レベルに固定する(ステップS57)。これにより、初期期間においてむやみに大量のログが出力される事態を回避できる。
なお、上記の図11〜図13の処理では、ログレベル設定部121aは、Javaメソッドがネイティブコード232に変換されたかを、そのJavaメソッドが呼び出される前に実行状況管理テーブル132aに登録した。しかし、他の方法として、ログレベル設定部121aは、Javaメソッドが呼び出されたときにJITコンパイル部231に問い合わせを行い、その応答結果から、呼び出されたJavaメソッドがネイティブコード232に変換されたかを判定してもよい。
以上の第3の実施の形態では、ログレベル設定部121aは、JITコンパイル部231が備えている機能を利用して、ノードが頻繁に実行されているかを判定し、その判定結果からログレベル134を設定する。このため、APS処理部220の処理を単純化して、その処理負荷を軽減することができ、また、APS処理部220の処理を実現するためのプログラムのデータ容量を削減することができる。
なお、上記の各実施の形態に示した装置(例えば、情報処理装置10,100およびホストサーバ201)の処理機能は、コンピュータによって実現することができる。その場合、各装置が有すべき機能の処理内容を記述したプログラムが提供され、そのプログラムをコンピュータで実行することにより、上記処理機能がコンピュータ上で実現される。処理内容を記述したプログラムは、コンピュータで読み取り可能な記録媒体に記録しておくことができる。コンピュータで読み取り可能な記録媒体としては、磁気記憶装置、光ディスク、光磁気記録媒体、半導体メモリなどがある。磁気記憶装置には、ハードディスク装置(HDD)、フレキシブルディスク(FD)、磁気テープなどがある。光ディスクには、DVD、DVD−RAM、CD−ROM、CD−R/RWなどがある。光磁気記録媒体には、MO(Magneto-Optical disk)などがある。
プログラムを流通させる場合には、例えば、そのプログラムが記録されたDVD、CD−ROMなどの可搬型記録媒体が販売される。また、プログラムをサーバコンピュータの記憶装置に格納しておき、ネットワークを介して、サーバコンピュータから他のコンピュータにそのプログラムを転送することもできる。
プログラムを実行するコンピュータは、例えば、可搬型記録媒体に記録されたプログラムまたはサーバコンピュータから転送されたプログラムを、自己の記憶装置に格納する。そして、コンピュータは、自己の記憶装置からプログラムを読み取り、プログラムに従った処理を実行する。なお、コンピュータは、可搬型記録媒体から直接プログラムを読み取り、そのプログラムに従った処理を実行することもできる。また、コンピュータは、ネットワークを介して接続されたサーバコンピュータからプログラムが転送されるごとに、逐次、受け取ったプログラムに従った処理を実行することもできる。
以上の各実施の形態に関し、さらに以下の付記を開示する。
(付記1) 複数のプログラムモジュールを含むプログラムを実行する情報処理装置において、
前記複数のプログラムモジュールの1つが呼び出されたとき、呼び出されたプログラムモジュールの過去の実行回数に基づいて、ログに含める情報の詳細度を設定する設定部と、
設定された前記詳細度に応じた情報を含むログを出力するログ出力部と、
を有することを特徴とする情報処理装置。
(付記2) 前記複数のプログラムモジュールのうち、呼び出し元のプログラムモジュールと呼び出し先のプログラムモジュールとの組み合わせごとに、実行された回数または実行頻度を計数する計数部をさらに有し、
前記設定部は、前記複数のプログラムモジュールの1つが呼び出されたとき、呼び出されたプログラムモジュールとその呼び出し元のプログラムモジュールとの組み合わせについての実行回数または実行頻度を所定のしきい値と比較し、実行回数または実行頻度が前記しきい値より低い場合には、出力されるログの前記詳細度を高くする、
ことを特徴とする付記1記載の情報処理装置。
(付記3) 前記設定部は、呼び出し元のプログラムモジュールと呼び出し先のプログラムモジュールのすべての組み合わせのうち、実行回数または実行頻度が前記しきい値以上である組み合わせの割合が所定値より低い場合には、出力されるログの前記詳細度を一定値以下に抑制することを特徴とする付記2記載の情報処理装置。
(付記4) 前記設定部は、前記複数のプログラムモジュールの1つが呼び出されたとき、呼び出されたプログラムモジュールの実行回数または実行頻度が所定のしきい値より低い場合には、出力されるログの前記詳細度を高くすることを特徴とする付記1記載の情報処理装置。
(付記5) 前記設定部は、前記複数のプログラムモジュールのうち、実行回数または実行頻度が前記しきい値以上であるプログラムモジュールの割合が所定値より低い場合には、出力されるログの前記詳細度を一定値以下に抑制することを特徴とする付記4記載の情報処理装置。
(付記6) 前記複数のプログラムモジュールのそれぞれについて、実行回数に基づいてネイティブコードにコンパイルするかを決定し、コンパイルすると決定したプログラムモジュールをネイティブコードにコンパイルしてから実行する仮想マシン処理部をさらに有し、
前記設定部は、前記複数のプログラムモジュールの1つが呼び出されたとき、呼び出されたプログラムモジュールがネイティブコードにコンパイルされたかを判定し、呼び出されたプログラムモジュールがネイティブコードにコンパイルされていない場合には、出力されるログの前記詳細度を高くする、
ことを特徴とする付記1記載の情報処理装置。
(付記7) 複数のプログラムモジュールを含むプログラムを実行する情報処理装置におけるログ出力方法であって、
前記複数のプログラムモジュールの1つが呼び出されたとき、呼び出されたプログラムモジュールの過去の実行回数に基づいて、ログに含める情報の詳細度を設定し、
設定された前記詳細度に応じた情報を含むログを出力する、
ことを特徴とするログ出力方法。
(付記8) 前記複数のプログラムモジュールのうち、呼び出し元のプログラムモジュールと呼び出し先のプログラムモジュールとの組み合わせごとに、実行された回数または実行頻度を計数する処理をさらに含み、
前記詳細度の設定では、前記複数のプログラムモジュールの1つが呼び出されたとき、呼び出されたプログラムモジュールとその呼び出し元のプログラムモジュールとの組み合わせについての実行回数または実行頻度を所定のしきい値と比較し、実行回数または実行頻度が前記しきい値より低い場合には、出力されるログの前記詳細度を高くする、
ことを特徴とする付記7記載のログ出力方法。
(付記9) 前記詳細度の設定では、呼び出し元のプログラムモジュールと呼び出し先のプログラムモジュールのすべての組み合わせのうち、実行回数または実行頻度が前記しきい値以上である組み合わせの割合が所定値より低い場合には、出力されるログの前記詳細度を一定値以下に抑制することを特徴とする付記8記載のログ出力方法。
(付記10) 前記詳細度の設定では、前記複数のプログラムモジュールの1つが呼び出されたとき、呼び出されたプログラムモジュールの実行回数または実行頻度が所定のしきい値より低い場合には、出力されるログの前記詳細度を高くすることを特徴とする付記7記載のログ出力方法。
(付記11) 前記詳細度の設定では、前記複数のプログラムモジュールのうち、実行回数または実行頻度が前記しきい値以上であるプログラムモジュールの割合が所定値より低い場合には、出力されるログの前記詳細度を一定値以下に抑制することを特徴とする付記10記載のログ出力方法。
(付記12) 前記複数のプログラムモジュールのそれぞれについて、実行回数に基づいてネイティブコードにコンパイルするかを決定し、コンパイルすると決定したプログラムモジュールをネイティブコードにコンパイルしてから実行する処理をさらに含み、
前記詳細度の設定では、前記複数のプログラムモジュールの1つが呼び出されたとき、呼び出されたプログラムモジュールがネイティブコードにコンパイルされたかを判定し、呼び出されたプログラムモジュールがネイティブコードにコンパイルされていない場合には、出力されるログの前記詳細度を高くする、
ことを特徴とする付記7記載のログ出力方法。
(付記13) コンピュータに、
前記コンピュータが実行する所定のプログラムに含まれる複数のプログラムモジュールのうちの1つが呼び出されたとき、呼び出されたプログラムモジュールの過去の実行回数に基づいて、ログに含める情報の詳細度を設定し、
設定された前記詳細度に応じた情報を含むログを出力する、
処理を実行させることを特徴とするログ出力プログラム。
(付記14) 前記コンピュータに、前記複数のプログラムモジュールのうち、呼び出し元のプログラムモジュールと呼び出し先のプログラムモジュールとの組み合わせごとに、実行された回数または実行頻度を計数する処理をさらに実行させ、
前記詳細度の設定では、前記複数のプログラムモジュールの1つが呼び出されたとき、呼び出されたプログラムモジュールとその呼び出し元のプログラムモジュールとの組み合わせについての実行回数または実行頻度を所定のしきい値と比較し、実行回数または実行頻度が前記しきい値より低い場合には、出力されるログの前記詳細度を高くする、
ことを特徴とする付記13記載のログ出力プログラム。
(付記15) 前記詳細度の設定では、呼び出し元のプログラムモジュールと呼び出し先のプログラムモジュールのすべての組み合わせのうち、実行回数または実行頻度が前記しきい値以上である組み合わせの割合が所定値より低い場合には、出力されるログの前記詳細度を一定値以下に抑制することを特徴とする付記14記載のログ出力プログラム。
(付記16) 前記詳細度の設定では、前記複数のプログラムモジュールの1つが呼び出されたとき、呼び出されたプログラムモジュールの実行回数または実行頻度が所定のしきい値より低い場合には、出力されるログの前記詳細度を高くすることを特徴とする付記13記載のログ出力プログラム。
(付記17) 前記詳細度の設定では、前記複数のプログラムモジュールのうち、実行回数または実行頻度が前記しきい値以上であるプログラムモジュールの割合が所定値より低い場合には、出力されるログの前記詳細度を一定値以下に抑制することを特徴とする付記16記載のログ出力プログラム。
(付記18) 前記コンピュータは、前記複数のプログラムモジュールのそれぞれについて、実行回数に基づいてネイティブコードにコンパイルするかを決定し、コンパイルすると決定したプログラムモジュールをネイティブコードにコンパイルしてから実行し、
前記詳細度の設定では、前記複数のプログラムモジュールの1つが呼び出されたとき、呼び出されたプログラムモジュールがネイティブコードにコンパイルされたかを判定し、呼び出されたプログラムモジュールがネイティブコードにコンパイルされていない場合には、出力されるログの前記詳細度を高くする、
ことを特徴とする付記13記載のログ出力プログラム。
10 情報処理装置
11 ログレベル設定部
12 ログ出力部
13 実行回数テーブル
20 ログファイル
21,22 ログ
M1,M2 プログラムモジュール

Claims (8)

  1. 複数のプログラムモジュールを含むプログラムを実行する情報処理装置において、
    前記複数のプログラムモジュールの1つが呼び出されたとき、呼び出されたプログラムモジュールの過去の実行回数に基づいて、ログに含める情報の詳細度を設定する設定部と、
    設定された前記詳細度に応じた情報を含むログを出力するログ出力部と、
    を有することを特徴とする情報処理装置。
  2. 前記複数のプログラムモジュールのうち、呼び出し元のプログラムモジュールと呼び出し先のプログラムモジュールとの組み合わせごとに、実行された回数または実行頻度を計数する計数部をさらに有し、
    前記設定部は、前記複数のプログラムモジュールの1つが呼び出されたとき、呼び出されたプログラムモジュールとその呼び出し元のプログラムモジュールとの組み合わせについての実行回数または実行頻度を所定のしきい値と比較し、実行回数または実行頻度が前記しきい値より低い場合には、出力されるログの前記詳細度を高くする、
    ことを特徴とする請求項1記載の情報処理装置。
  3. 前記設定部は、呼び出し元のプログラムモジュールと呼び出し先のプログラムモジュールのすべての組み合わせのうち、実行回数または実行頻度が前記しきい値以上である組み合わせの割合が所定値より低い場合には、出力されるログの前記詳細度を一定値以下に抑制することを特徴とする請求項2記載の情報処理装置。
  4. 前記設定部は、前記複数のプログラムモジュールの1つが呼び出されたとき、呼び出されたプログラムモジュールの実行回数または実行頻度が所定のしきい値より低い場合には、出力されるログの前記詳細度を高くすることを特徴とする請求項1記載の情報処理装置。
  5. 前記設定部は、前記複数のプログラムモジュールのうち、実行回数または実行頻度が前記しきい値以上であるプログラムモジュールの割合が所定値より低い場合には、出力されるログの前記詳細度を一定値以下に抑制することを特徴とする請求項4記載の情報処理装置。
  6. 前記複数のプログラムモジュールのそれぞれについて、実行回数に基づいてネイティブコードにコンパイルするかを決定し、コンパイルすると決定したプログラムモジュールをネイティブコードにコンパイルしてから実行する仮想マシン処理部をさらに有し、
    前記設定部は、前記複数のプログラムモジュールの1つが呼び出されたとき、呼び出されたプログラムモジュールがネイティブコードにコンパイルされたかを判定し、呼び出されたプログラムモジュールがネイティブコードにコンパイルされていない場合には、出力されるログの前記詳細度を高くする、
    ことを特徴とする請求項1記載の情報処理装置。
  7. 複数のプログラムモジュールを含むプログラムを実行する情報処理装置におけるログ出力方法であって、
    前記複数のプログラムモジュールの1つが呼び出されたとき、呼び出されたプログラムモジュールの過去の実行回数に基づいて、ログに含める情報の詳細度を設定し、
    設定された前記詳細度に応じた情報を含むログを出力する、
    ことを特徴とするログ出力方法。
  8. コンピュータに、
    前記コンピュータが実行する所定のプログラムに含まれる複数のプログラムモジュールのうちの1つが呼び出されたとき、呼び出されたプログラムモジュールの過去の実行回数に基づいて、ログに含める情報の詳細度を設定し、
    設定された前記詳細度に応じた情報を含むログを出力する、
    処理を実行させることを特徴とするログ出力プログラム。
JP2012193695A 2012-09-04 2012-09-04 情報処理装置、ログ出力方法およびログ出力プログラム Expired - Fee Related JP5998764B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2012193695A JP5998764B2 (ja) 2012-09-04 2012-09-04 情報処理装置、ログ出力方法およびログ出力プログラム
US14/016,978 US20140067886A1 (en) 2012-09-04 2013-09-03 Information processing apparatus, method of outputting log, and recording medium

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2012193695A JP5998764B2 (ja) 2012-09-04 2012-09-04 情報処理装置、ログ出力方法およびログ出力プログラム

Publications (2)

Publication Number Publication Date
JP2014049056A true JP2014049056A (ja) 2014-03-17
JP5998764B2 JP5998764B2 (ja) 2016-09-28

Family

ID=50188950

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2012193695A Expired - Fee Related JP5998764B2 (ja) 2012-09-04 2012-09-04 情報処理装置、ログ出力方法およびログ出力プログラム

Country Status (2)

Country Link
US (1) US20140067886A1 (ja)
JP (1) JP5998764B2 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2017167937A (ja) * 2016-03-17 2017-09-21 株式会社東芝 生成装置、プログラム、生成方法および情報処理装置

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2014197350A (ja) * 2013-03-29 2014-10-16 キヤノン株式会社 情報処理装置、情報処理方法及びプログラム
CN105279098B (zh) * 2014-07-22 2019-02-12 中兴通讯股份有限公司 内存的清理方法及装置
US10846195B2 (en) * 2015-10-05 2020-11-24 Unisys Corporation Configuring logging in non-emulated environment using commands and configuration in emulated environment
JP2018060285A (ja) * 2016-10-03 2018-04-12 キヤノン株式会社 情報処理装置、情報処理方法、およびプログラム
CN107609117B (zh) * 2017-09-13 2020-09-01 Oppo广东移动通信有限公司 日志信息上报方法、装置及存储介质、adsp和终端
CN108920369A (zh) * 2018-07-02 2018-11-30 郑州云海信息技术有限公司 一种服务器压力测试方法、装置、设备及存储介质

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2005346407A (ja) * 2004-06-03 2005-12-15 Hitachi Ltd 動的コンパイルにおけるインライン展開実施方法
WO2012111167A1 (ja) * 2011-02-14 2012-08-23 株式会社日立製作所 トレース情報取得方法、コンピュータシステム及びプログラム

Family Cites Families (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6072951A (en) * 1997-10-15 2000-06-06 International Business Machines Corporation Profile driven optimization of frequently executed paths with inlining of code fragment (one or more lines of code from a child procedure to a parent procedure)
US6189141B1 (en) * 1998-05-04 2001-02-13 Hewlett-Packard Company Control path evaluating trace designator with dynamically adjustable thresholds for activation of tracing for high (hot) activity and low (cold) activity of flow control
US6463582B1 (en) * 1998-10-21 2002-10-08 Fujitsu Limited Dynamic optimizing object code translator for architecture emulation and dynamic optimizing object code translation method
GB9825102D0 (en) * 1998-11-16 1999-01-13 Insignia Solutions Plc Computer system
US7725885B1 (en) * 2000-05-09 2010-05-25 Hewlett-Packard Development Company, L.P. Method and apparatus for trace based adaptive run time compiler
JP3924256B2 (ja) * 2003-03-12 2007-06-06 インターナショナル・ビジネス・マシーンズ・コーポレーション コンパイラ装置、コンパイラプログラム、記録媒体、コンパイル方法、実行時情報生成装置、及び実行時情報生成プログラム
US7231633B2 (en) * 2003-07-15 2007-06-12 Lsi Corporation Debugging with set verbosity level during read and analysis of executable code and associated comments while logging according to set verbosity level
US7395527B2 (en) * 2003-09-30 2008-07-01 International Business Machines Corporation Method and apparatus for counting instruction execution and data accesses
JP4590229B2 (ja) * 2004-08-17 2010-12-01 株式会社日立製作所 ポリシルール管理支援方法およびポリシルール管理支援装置
US20060048114A1 (en) * 2004-09-02 2006-03-02 International Business Machines Corporation Method and apparatus for dynamic compilation of selective code blocks of computer programming code to different memory locations
US7818722B2 (en) * 2006-06-09 2010-10-19 International Business Machines Corporation Computer implemented method and system for accurate, efficient and adaptive calling context profiling
CA2672337C (en) * 2009-07-15 2017-01-03 Ibm Canada Limited - Ibm Canada Limitee Compiler instrumentation infrastructure to facilitate multiple pass and multiple purpose dynamic analysis
US9529694B2 (en) * 2009-09-14 2016-12-27 Oracle International Corporation Techniques for adaptive trace logging
WO2011116987A1 (en) * 2010-03-26 2011-09-29 Software Diagnostics Technology Gmbh A method for automatically generating a trace data set for a software system, a computer system, and a computer program product
US9081587B1 (en) * 2012-04-25 2015-07-14 Google Inc. Multiversioned functions
US8719791B1 (en) * 2012-05-31 2014-05-06 Google Inc. Display of aggregated stack traces in a source code viewer

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2005346407A (ja) * 2004-06-03 2005-12-15 Hitachi Ltd 動的コンパイルにおけるインライン展開実施方法
WO2012111167A1 (ja) * 2011-02-14 2012-08-23 株式会社日立製作所 トレース情報取得方法、コンピュータシステム及びプログラム

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2017167937A (ja) * 2016-03-17 2017-09-21 株式会社東芝 生成装置、プログラム、生成方法および情報処理装置

Also Published As

Publication number Publication date
US20140067886A1 (en) 2014-03-06
JP5998764B2 (ja) 2016-09-28

Similar Documents

Publication Publication Date Title
JP5998764B2 (ja) 情報処理装置、ログ出力方法およびログ出力プログラム
CN110399260B (zh) 用于预测性地服务和支持解决方案的系统和方法
JP5705084B2 (ja) 2パス自動アプリケーション計測
US8250543B2 (en) Software tracing
US11544137B2 (en) Data processing platform monitoring
JP2016527578A (ja) アプリケーションシナリオの識別方法、電力消費の管理方法、装置、および端末デバイス
US8631280B2 (en) Method of measuring and diagnosing misbehaviors of software components and resources
US20160224400A1 (en) Automatic root cause analysis for distributed business transaction
US10802847B1 (en) System and method for reproducing and resolving application errors
CN108717374B (zh) Java虚拟机启动时预热的方法、装置、及计算机设备
US20060277440A1 (en) Method, system, and computer program product for light weight memory leak detection
CN108874672B (zh) 应用程序异常定位方法、装置、设备及存储介质
US9442817B2 (en) Diagnosis of application server performance problems via thread level pattern analysis
US11314610B2 (en) Auto-recovery for software systems
CN107045475B (zh) 测试方法和装置
US11762720B2 (en) Information processing apparatus and non-transitory computer-readable storage medium for storing API use history display program
WO2015027403A1 (en) Testing multi-threaded applications
JP2016151850A (ja) ストレージ制御装置、制御プログラムおよび制御方法
CN107741891B (zh) 对象的析构方法、介质、装置和计算设备
US20160170876A1 (en) Managed runtime cache analysis
US20180287914A1 (en) System and method for management of services in a cloud environment
JPWO2009150737A1 (ja) 保守業務支援プログラム、保守業務支援方法および保守業務支援装置
US20120023379A1 (en) Storage device, storage system, and control method
CN110837467A (zh) 软件测试方法、装置以及系统
US20220217097A1 (en) Method and system for allocating and managing cloud resources

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20150512

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20160120

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20160216

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20160418

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20160802

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20160815

R150 Certificate of patent or registration of utility model

Ref document number: 5998764

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees