JP6179331B2 - ログ出力条件設定プログラム、装置、および方法 - Google Patents

ログ出力条件設定プログラム、装置、および方法 Download PDF

Info

Publication number
JP6179331B2
JP6179331B2 JP2013212334A JP2013212334A JP6179331B2 JP 6179331 B2 JP6179331 B2 JP 6179331B2 JP 2013212334 A JP2013212334 A JP 2013212334A JP 2013212334 A JP2013212334 A JP 2013212334A JP 6179331 B2 JP6179331 B2 JP 6179331B2
Authority
JP
Japan
Prior art keywords
log
call
context
acquisition target
output condition
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.)
Active
Application number
JP2013212334A
Other languages
English (en)
Other versions
JP2015075964A (ja
Inventor
鈴木 雄一郎
雄一郎 鈴木
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 JP2013212334A priority Critical patent/JP6179331B2/ja
Priority to US14/477,985 priority patent/US9804908B2/en
Publication of JP2015075964A publication Critical patent/JP2015075964A/ja
Application granted granted Critical
Publication of JP6179331B2 publication Critical patent/JP6179331B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • 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
    • 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/0751Error or fault detection not based on redundancy
    • 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/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
    • 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

Description

本発明は、ログの出力条件を設定するプログラム、装置、および方法に関する。
多くのコンピュータは、何らかの種類のログを出力する機能を備える。ログに含まれる情報は、例えば、障害が発生した際に障害の原因を究明するうえで有益である。しかし、ログを出力する処理はオーバヘッドの一種であるから、不必要に多くの情報を含むログを出力することは好ましくない。
そこで、システムの状態を認識するためのログ取得では、目的(保存容量、ログ取得による性能劣化)に応じたログレベルの設定により、出力されるログの容量を制限している。障害等が発生した場合には、詳細なログ(高いログレベル)が必要となり、ログレベルの設定を適切なものとするため、アプリケーションの実行実績等の情報が用いられる。
従来、イベントログに出力させる箇所を、効率よく限定したり、動的に変更可能としたりするロギングシステムが提案されている(例えば特許文献1)。当該ロギングシステムでは、ログ管理プログラムがログ出力設定テーブルの内容を参照して対象メソッドの呼び出し起点と終了を把握する。
また、アプリケーションプログラムの実行中のチェックポイントのデータをリアルタイムにロギングするロギング装置が提案されている(例えば特許文献2)。当該ロギング装置では、アプリケーションプログラム中には、予め外部から設定されるログ出力条件と、各チェックポイントにおいて呼び出される複数のログ出力関数とが組み込まれる。通常時はログ出力関数のパラメータで指定されたエラーレベルが通常時ログ出力条件に合致する場合のみログ出力される。トリガーレベルに合致するエラーレベルが発生した場合には、異常時ログ出力レベルに合致したエラーレベルの詳細ログが出力される。
サーバの稼働性をあげることを目的とし、クライアントコンピュータから出力される
要求に対して応答処理を実行する以下のような情報処理装置も提案されている(例えば特許文献3)。この情報処理装置は、クライアントコンピュータから出力される要求に対する応答処理を実行させるための第1プログラムを格納する記憶装置と、演算処理装置を備える。この演算装置は、クライアントコンピュータから第1要求を受け取ると、第1プログラム及び第1要求を複製し、第1プログラムの複製である第2プログラムを実行して、第1要求に対する第1プログラムの応答処理を監視する。この演算装置は、第1プログラムの応答処理の障害を検出した場合、第2プログラムを実行して、第1要求の複製である第2要求に対する応答処理を行う。
特開2004−094374号公報 特開2009−205488号公報 特開2012−18512号公報
しかし、対象メソッドに応じてログの出力状態を限定したり、チェックポイントのログのみを出力する方式では、メソッドの入力値や内部状態によって障害が発生するような場合に詳細なログ出力を得ることができないという問題点を有していた。
また、プログラムを複製して障害に対処する方式では、複製処理のオーバヘッドが大きいという問題点を有していた。
そこで、1つの側面では、メソッドの入力値や内部状態によって障害が発生するような場合においても詳細なログを出力可能とすることを目的とする。
態様の一例であるログ出力条件設定プログラムでは、コンピュータに、ログ取得対象の呼び出しの際に、呼び出しのコンテキストを取得し、ログ取得対象に対する呼び出しのコンテキストと処理結果とを対応づけた情報を蓄積して得られた蓄積情報であって正常な処理結果を生じさせたコンテキストと異常な処理結果を生じさせたコンテキストとを分類する該蓄積情報、および、取得したコンテキストに基づき、そのログ取得対象におけるログの出力条件を設定することを含む処理を実行させる。
メソッドの入力値や内部状態によって障害が発生するような場合においても詳細なログを出力することが可能となる。
第1の実施形態に係る情報処理装置の処理機能の構成例を示すブロック図である。 引数(入力値)によってログレベルを制御する例を示す図である。 内部状態によってログレベルを制御する例を示す図である。 プロセス間でログ制御情報を伝播してログレベルを制御する例を示す図である。 第2、第3の実施形態に係る情報処理システムのシステム構成例を示す図である。 第2の実施形態に係るホストサーバの処理機能の構成例を示すブロック図である。 値範囲実績テーブルのデータ構成例を示す図である。 呼出し経路実績リストテーブルのデータ構成例を示す図である。 ログレベル設定部の処理例を示すフローチャートである。 処理結果判定部の処理例を示すフローチャートである。 第3の実施形態に係るホストサーバの処理機能の構成例を示すブロック図である。 ログ制御情報通信部の送信処理例を示すフローチャートである。 ログ制御情報通信部の第1の受信処理例を示すフローチャートである。 ログ制御情報通信部の第2の受信処理例を示すフローチャートである。 第1の実施形態に係る情報処理装置のハードウェア構成例を示す図である。
以下、本発明を実施するための形態について図面を参照しながら詳細に説明する。
一般的には、障害発生の直接的な要因が、障害が発生したメソッド自身ではなく、入力値によるものである場合、例えば、Webアプリケーションやデータベース処理における入力値(リクエストパラメタやSQL文)等の場合、アプリケーションの実行実績を用いてログレベルを下げていると、障害の解析に必要なログレベルとはならない(外部変数により、障害発生の状況が異なる)。
また、障害発生の直接的な要因が、入力値そのものではなく、メソッドが扱う内部の状態(たとえば、使用しているメモリの状態)によるものである場合も存在するが、外部より直接的に得られる情報から、内部の状態に応じて、ログレベルを変更することは困難である。
さらに、ログを全て詳細に出力し、メソッドの実行結果に応じて、特定のログのみ、詳細出力から取り出す手法も存在するが、ログを全て詳細に出力することによる、入出力等の性能劣化が問題となり、容易には採用できない。
図1は、上述のような課題を解決するための第1の実施形態に係る情報処理装置100の処理機能の構成例を示すブロック図である。
情報処理装置100は、ログ取得対象処理部101、コンテキスト取得部102、ログ出力条件設定部103、ログ出力部104、および処理結果判定部105を備える。
ログ取得対象処理部101は、情報処理装置100上での実行の単位であるログ取得対象を実行して処理する。ログ取得対象は例えば、後述する図15のCPU1501が外部記憶装置1505からメモリ1502に読み出して実行するプログラムであるプロセス、スレッド、アプリケーションプログラム、プログラムモジュール、関数プログラム、プロシージャ、またはオブジェクト指向言語で記述されるクラスにおいて定義されるメソッドのうちのいずれかである。
コンテキスト取得部102は、ログ取得対象の呼び出しの際に、呼び出しのコンテキストを取得する。コンテキストは例えば、ログ取得対象が呼び出されるときにログ取得対象に対して引数として与えられる入力値またはログ取得対象の呼出し経路のうち少なくとも1つを含む。ここで、コンテキストが例えばログ取得対象の引数の入力値であるときには、その入力値の値の範囲が判定される。また、コンテキストが例えばログ取得対象の呼出し経路である場合には、ログ取得対象の具体的な呼出し関係、すなわち、ログ取得対象が呼び出されるまでに、どのプログラムが順に呼び出されてきたかが抽出される。
ログ出力条件設定部103は、ログ取得対象に対する呼び出しのコンテキストと処理結果とを対応づけた情報を蓄積した蓄積情報106、および、取得したコンテキストに基づき、そのログ取得対象におけるログの出力条件108を設定する。
ログ出力部104は、ログ出力条件設定部103が設定したログの出力条件108のもとで、ログ取得対象処理部101が実行しているログ取得対象に対応するログ109を、ログファイル110に出力する。
処理結果判定部105は、呼び出しのコンテキストと処理結果を対応づけた情報を蓄積情報106に蓄積する。
図1の構成において、情報処理装置100は、ログ制御情報通信部107を備えてよい。このログ制御情報通信部107は、ログ取得対象が情報処理装置100または他の情報処理装置上で実行される他のプログラムから呼び出されるときに、他のプログラムからログ取得対象への呼出しに含めて伝播されるログ制御情報を通信する。この場合、ログ出力条件設定部103は、このログ制御情報を用いてログ取得対象におけるログの出力条件を設定してよい。
このように、複数の機器が連関して動作する場合は、「処理結果を受け渡す側」のプログラム(ログ取得対象)におけるログレベル判断結果(ログ取得条件)を、ログ制御情報として「処理結果を受け取る側」のプログラムに伝播させるように構成できる。これにより、「処理結果を受け取る側」において、処理開始時から必要なログレベルを設定させることが可能となる。
上述の101、102、103、104、105、または107の各処理部は例えば、後述する図15のCPU1501が、外部記憶装置1505からメモリ1502に読み出した各処理部に対応する処理プログラムを実行することにより実現される。
図1の構成を有する情報処理装置100の処理機能につき、以下に詳細に説明する。
第1の実施形態に係る図1の処理機能は、メソッド等のログ取得対象における異常な入力値や異常な内部状態においても、適切にログレベル等のログの出力条件108を変更可能とすることにより、異常の発生(または予兆)時の詳細ログ出力の精緻性を向上させるものである。
そのために、第1の実施形態に係る図1の処理機能では、ログの出力条件108の変更の判断を、引数の入力値や呼出し経路等の内部状態を加味した、動的なコンテキストにより行う方式(論理)を用いる。
例えば、ログ取得対象をメソッドとする。この場合、ログ取得対象処理部101は、JVM(Java Virtual Machine。JavaはOracle Corporationの登録商標。)処理部等の、メソッドの実行部である。また、コンテキスト取得部102は、メソッドの呼び出しの際に、引数として与えられる入力値またはそのメソッドの呼出し経路等のコンテキストを取得する。そして、ログ出力条件設定部103は、メソッドのコンテキストと正常または異常等の処理結果とを対応づけた情報を蓄積した蓄積情報106、および上述の取得したコンテキストに基づき、ログ109の出力条件108を設定する。この出力条件108は例えば、そのメソッドが実行されるときにログ出力部104が例えばログファイル110として出力するログ109の出力の詳細度を示すログレベルである。なお、ログの出力条件108としては、ログレベルが一般的であるが、そのほか、ログ109を出力するかしないか等の条件や、ログ109の出力フォーマット等の条件を含んでもよい。
メソッドの呼出し時にコンテキスト取得部102で取得されるコンテキストが、例えば引数として与えられる入力値とそのメソッドの呼出し経路である場合には、ログ出力条件設定部103は、より具体的には、例えば次のような制御を行ってよい。
まず、ログ出力条件設定部103は、蓄積情報106の一部であるメソッドの入力値と処理結果とを対応づけた情報を蓄積した入力値蓄積情報、および、入力値に基づき、ログの出力条件108を設定する。
例えば、メソッド呼出し時の引数の値がプリミティブな型(数値や文字列など)を有する場合、ログ出力条件設定部103は、その引数の値の範囲を判断することができる。このような場合には、ログ出力条件設定部103は、引数の値の範囲を判断し、その判断結果を例えばログレベルの変更の要否判断に用いる。
図2は、引数(入力値)によってログレベルを制御する例を示す図である。
ログ出力条件設定部103は、蓄積情報106の一部である入力値蓄積情報を参照した結果、引数である入力値の範囲が過去に処理実績のある値の範囲にある場合には、ログ出力部104に対して低いログレベルが設定される方向に制御をしてよい。例えば図2(a)に示されるように、メソッドであるmethodAやmethodBが呼び出されるときの入力値x1やy1の値の範囲が過去に処理実績のある値の範囲にある場合には、ログレベルが低くなる方向に制御をしてよい。この結果、ログファイル110におけるログ出力量は低減される。
逆に、引数である入力値の範囲が過去に処理実績のない値の範囲にある場合には、ログ出力条件設定部103は、ログ出力部104に対して高いログレベルが設定される方向に制御をしてよい。例えば図2(b)に示されるように、methodAやmethodBが呼び出されるときの入力値x2やy2の値の範囲が過去に処理実績のない値の範囲にある場合には、ログレベルが高くなる方向に制御をしてよい。この結果、ログファイル110には詳細ログが出力される。
一般に、メソッド呼出し時の入力値の範囲が過去に処理実績のない値の範囲にある場合には、その入力値は異常値である可能性が高く、ログ取得対象処理部101がそのメソッドを実行した場合にエラーが発生する確率が高くなると考えることができる。従って、メソッド呼出し時の入力値の範囲が過去に処理実績のない値の範囲にある場合には、ログレベルが高くなる方向に制御をすることにより、エラー発生時により詳細なログ109を取得することが可能となる。
次に、蓄積情報106の一部であるメソッドの入力値と処理結果とを対応づけた入力値蓄積情報を参照して、ログの出力条件108を設定できない場合がある。
例えば、メソッド呼出し時の引数の値が数値や文字列等のプリミティブな型ではない、または文字列であってもその形式(フォーマット)が複雑である、または、直接引数として値を渡さない場合には、入力値による判断を行うことができない。このようなケースとしては例えば、引数がデータベースを検索するためのSQL文である場合や、引数が他の変数を参照するポインタ値である場合などがある。
このような場合にもログの出力条件108を設定できるように、ログ出力条件設定部103は、呼び出されたメソッドの呼出し経路を、蓄積情報106の一部であるメソッドの呼出し経路と処理結果とを対応づけた情報を蓄積した呼出し経路蓄積情報を参照して判断する。
ログ出力条件設定部103は、メソッドの入力値の範囲を判断できた場合には、その判断結果と、上述の呼出し経路の判断結果の両方を用いて、ログの出力条件108を設定する。一方、ログ出力条件設定部103は、メソッドの入力値の範囲を判断できなかった場合には、上述の呼出し経路の判断結果のみを用いて、ログの出力条件108を設定する。
あるいは、ログ出力条件設定部103は、次のような制御を行ってもよい。ログ出力条件設定部103は、入力値蓄積情報を参照してログの出力条件108の設定を試みる。一方、この設定が可能でない場合には、呼び出されたメソッドの呼出し経路を経路蓄積情報を参照して、ログの出力条件108を設定する。
メソッドの呼出し経路としては、呼出し元のメソッドと呼出し先の(呼び出された)メソッド間の接続関係のみではなく、その一連の処理開始からある時点までの呼出し経路を用いる。このような呼出し経路は例えば、コールスタックを参照することにより、取得することができる。勿論、コールスタック以外の手段を用いて、メソッドの呼出し経路を取得してもよい。
ログ出力条件設定部103は、蓄積情報106の一部である呼出し経路蓄積情報を参照した結果、呼び出されたメソッドの呼出し経路が過去に呼出し実績のある経路である場合には、ログ出力部104に低いログレベルが設定される方向に制御をする。図3は、内部状態によってログレベルを制御する例を示す図である。例えば図3(a)に示されるように、ある内部状態αにおけるmethodAからmethodBの呼出し経路が、呼出し経路蓄積情報を参照した結果、過去に呼出し実績があれば、ログの出力条件108であるログレベルが低くなる方向に制御がされる。この結果、ログファイル110におけるログ出力量は低減される。
逆に、呼び出されたメソッドの呼出し経路が過去に呼出し実績のない経路である場合には、ログ出力条件設定部103は、ログ出力部104に高いログレベルが設定される方向に制御をする。例えば図3(b)に示されるように、内部状態αとは異なる別の内部状態βでは、methodAからsubMethodCが呼ばれ内部状態γとなったのち、methodBが呼ばれるような場合を考える。この場合、呼出し経路蓄積情報を参照した結果、methodA⇒subMethodCという呼出し経路が過去に呼出し実績がなければ、subMethodCが呼び出された時点のログの出力条件108であるログレベルは高くなる。同様に、呼出し経路蓄積情報を参照した結果、methodA⇒subMethodC⇒methodBという呼出し経路も過去に呼出し実績がなければ、methodBが呼び出された時点のログの出力条件108であるログレベルは高くなる方向に制御がされる。これらの場合には、ログファイル110には詳細ログが出力される。
一般に、メソッドが通常とは異なる呼出し経路で呼び出された場合には、異常な内部状態になっている可能性が高く、ログ取得対象処理部101がそのメソッドを実行した場合にエラーが発生する確率が高くなると考えることができる。従って、メソッドの呼出し経路が過去に呼出し実績がない場合には、ログレベルが高くなる方向に制御を行うことにより、エラー発生時により詳細なログ109を取得することが可能となる。
以上のように、第1の実施形態に係る図1の処理機能では、ログの出力条件108の変更の判断が、引数の入力値や呼出し経路等の内部状態を加味した動的なコンテキストについて行われる。これにより、異常な入力値または異常な内部状態の発生時にログレベルを引き上げることが可能となり、異常の発生(または予兆)時の詳細ログ出力の精緻性を向上させることが可能となる。
第1の実施形態に係る図1の処理機能において、ログ出力条件設定部103が、引数の入力値の範囲についての判断結果と呼出し経路の判断結果をどのように組み合わせてログレベル等のログの出力条件108を設定する制御を行うかは、上述の組合せの他にも、様々な組合せを採用することができる。
ここで、現実には、例えばメソッド等のプログラムの処理は、1つのプログラム内に閉じず、プログラム間(プロセス間、計算機間など含む)を跨って処理結果の受け渡しが行われる場面が多い。このとき、受け渡される情報(引数)についてその入力値の範囲の判断が可能な場合には、処理結果を受け取る側のプログラムにおいて、ログレベルの高低の判断は、引数の入力値の範囲を判断することにより、即座に行える。つまり異常が発生する可能性(予兆)がある場合には、プログラムの処理を開始した時点から高いログレベルに設定することが可能である。一方、受け渡される情報(引数)についてその入力値の範囲の判断ができない場合には、処理結果を受け取る側のプログラムの内部状態が「過去に呼出し実績がない」経路となるまでは、ログレベルは低いままとなる。
この課題を解決するために、第1の実施形態に係る図1の処理機能では、ログ制御情報通信部107が設けられてよい。ログ制御情報通信部107は、例えばメソッドが情報処理装置100自身のコンピュータまたは他のコンピュータ上で実行される他のプログラム(例えばメソッド)から呼び出されるときに、他のプログラムからメソッドへの呼出しに含めてログ制御情報を伝播する。そして、ログ出力条件設定部103は、そのログ制御情報を用いて呼び出されたメソッドにおけるログの出力条件108を決定し、ログ出力部104に設定する。
ログ制御情報は例えば、呼出し元であるプロセス1(他のプログラム)において設定されたログレベル(ログの出力条件)であってよい。図4は、プロセス間でログ制御情報を伝播してログレベルを制御する例を示す図である。この場合、ログ出力条件設定部103は、呼び出されたプロセス2(ログ取得対象)に対応して暫定的に設定したログレベルと、プロセス1から伝播されたプロセス1で設定されたログレベルとを比較して、プロセス2における最終的なログレベルを設定する、より具体的には、ログ出力条件設定部103は、プロセス2に対応して暫定的に設定したログレベルと、プロセス1から伝播されたログレベルのうち、より高いほうのログレベルを最終的なログレベルとして設定する。
或いは、ログ制御情報は例えば、呼出し元であるプロセスまたはメソッド(他のプログラム)の呼出し経路を含んでよい。この場合、ログ出力条件設定部103は、プロセスまたはメソッド(ログ取得対象)が呼び出される際に、次の制御を実行する。ログ出力条件設定部103は、呼出し元のプロセスまたはメソッドから伝播された当該呼出し元のプロセスまたはメソッドの呼出し経路を、当該呼び出されたプロセスまたはメソッドの呼出し経路の先頭に付加して、新たな呼出し経路とする。そして、ログ出力条件設定部103は、その新たな呼出し経路が、当該呼び出されたプロセスまたはメソッドの呼出し経路と処理結果とを対応づけた呼出し経路蓄積情報に含まれるか否かを判断することにより、ログレベルを設定する。
以上のように、第1の実施形態に係る図1の処理機能では、呼び出されたメソッド等におけるログレベル等が、呼出し元のメソッド等に対応するログレベルや呼出し経路等を加味して設定される。これにより、プログラム(プロセス、マシン)を跨いで異常の発生(または予兆)を伝播させることができ、情報処理システム全体として異常の発生(または予兆)をとらえて、詳細ログ出力の精緻性を向上させることが可能となる。
なお、呼び出されるログ取得対象と呼出し元のプログラムは、同一の情報処理装置100(マシン)上で実行されるプロセス同士、スレッド同士、またはメソッド同士であってもよい。或いは、異なる情報処理装置100(マシン)上で実行されるプロセス同士であってもよい。
異なる情報処理装置100間で呼出し元のログレベルを伝播させる場合には、各情報処理装置100に図1の処理機能が実装され、呼出し元のログレベルも図1の処理機能によって設定されてよい。この場合、呼出し元の情報処理装置100のログ制御情報通信部107から呼出し先の情報処理装置100のログ制御情報通信部107に、ログレベルや呼出し経路等のログ制御情報が伝播される。
同一の情報処理装置100間でログ制御情報を伝播する場合、例えばJVM処理部にその一部またはミドルウェアとして付加される図1の処理機能のコンテキスト取得部102が、呼出し元と呼出し先の各プロセス、スレッド、またはメソッドを取得してよい。そして、ログ制御情報通信部107が、呼出し元と呼出し先の各プロセス、スレッド、またはメソッド間で、ログ制御情報であるログレベルや呼出し経路を引き渡す。
図5は、第2、第3の実施形態に係る情報処理システムのシステム構成例を示す図である。これらの実施形態では、図1に示される第1の実施形態に係る情報処理装置の処理機能と同等の処理機能が、仮想マシンを実現するホストサーバ501として実現されている。
情報処理システム500は、ホストサーバ501と、複数のクライアント502と、管理端末503とが、ネットワーク504によって相互に接続された構成を有する。なお、ホストサーバ501、クライアント502、および管理端末503は、いずれも後述する図15に示されるようなハードウェア構成例を有するコンピュータとして実現可能である。
ホストサーバ501は、JVMを構築し、JVM上で各種のアプリケーションプログラムを実行することで、各クライアント502に対して各種のサービスを提供する。
クライアント502は、ホストサーバ501が提供するサービスを受けるユーザによって操作される端末装置であり、ユーザの操作に応じてホストサーバ501にアクセスする。
管理端末503は、ホストサーバ501の管理者によって操作される端末装置である。管理端末503は例えば、管理者からの操作に応じてホストサーバ501にアクセスし、ホストサーバ501に記録されたログファイルを読み出して、表示装置(例えば後述する図15の出力装置1504を構成するディスプレイ装置)にログを表示する。管理者は、表示されたログに基づいて、ホストサーバ501で発生した障害に対処することができる。
図6は、第2の実施形態に係る図5のホストサーバ501の処理機能の構成例を示すブロック図である。
ホストサーバ501は、APS(APplication Server)処理部601と、JVM処理部602を備える。また、ホストサーバ501の記憶装置(例えば後述する図15の外部記憶装置1505またはメモリ1502)には、アプリケーションプログラム603、値範囲実績テーブル608、呼出し経路実績リストテーブル609、およびログファイル110が記憶される。
アプリケーションプログラム603は、第1の実施形態に係る図1の処理機能の構成例におけるログ取得対象に対応するものである。アプリケーションプログラム603は、JVM処理部602によって構成されるJava仮想マシン上で実行される。
JVM処理部602の処理は、ホストサーバ501上で、プロセッサ(例えば後述する図15のCPU1501)が、外部記憶装置(例えば後述する図15の外部記憶装置1505)からメモリ(例えば後述する図15のメモリ1502)にJVM処理プログラムを読み出して実行することで実現される。JVM処理部602は、第1の実施形態に係る図1のログ取得対象処理部101に対応し、Java仮想マシンとしての処理を実行する。JVM処理部602は、APS処理部601を介してアプリケーションプログラム603のソースコードまたはネイティブコードを取得して実行し、アプリケーションプログラム603に従ったJava仮想マシンとしての処理を実行する。アプリケーションプログラム603がソースコードである場合には、JVM処理部602は、アプリケーションプログラム603を変換して得られる中間コード(バイトコード)を、インタープリタ方式で逐次解釈して実行する。アプリケーションプログラム603がネイティブコードである場合には、JVM処理部602は、そのネイティブコードを直接実行する。なお、JVM処理部602は、実行状況に応じて、ソースコードであるアプリケーションプログラム603の中間コードの所定範囲を、内部の特には図示しないJIT(Just In Time)コンパイラでネイティブコードにコンパイルしてから実行する。このようにして生成されたアプリケーションプログラム603のネイティブコードは、必要に応じて、記憶装置に記憶されて再利用される。
APS処理部601の処理は、ホストサーバ501上で、プロセッサが外部記憶装置からメモリにAPS処理プログラムを読み出して実行することで実現される。APS処理部601は、Java仮想マシンの一部として実現されてもよく、或いは、Java仮想マシンにアドオンされるミドルウェアとして実現されてもよい。APS処理部601は、Java仮想マシン上でのアプリケーションプログラム603の実行状況を監視し、ログファイル612にログ611を出力する。APS処理部601は、メソッド呼出し認識部604、ログレベル設定部605、ログ出力部104、および処理結果判定部105を備える。
メソッド呼出し認識部604は、第1の実施形態に係る図1のコンテキスト取得部102に対応する。メソッド呼出し認識部604は、アプリケーションプログラム603の実行の単位であるメソッドの呼出しと、そのメソッドに引数として与えられる入力値を認識し取得する。
ログレベル設定部605は、第1の実施形態に係る図1のログ出力条件設定部103に対応する。ログレベル設定部605は、メソッド呼出し認識部604が呼出しを取得したメソッドの引数の入力値と呼出し経路を値範囲実績テーブル608および呼出し経路実績リストテーブル609を参照して判断する。これにより、ログレベル設定部605はそのメソッドに対応するログレベル610を決定し、ログ出力部606に設定する。
値範囲実績テーブル608および呼出し経路実績リストテーブル609は、第1の実施形態に係る図1の蓄積情報106に対応する。蓄積情報106は例えば、入力値蓄積情報および呼出し経路蓄積情報である。
ログ出力部606は、第1の実施形態に係る図1のログ出力部104に対応する。ログ出力部606は、ログレベル設定部605が設定したログレベル610で、JVM処理部602が実行しているアプリケーションプログラム603のメソッドに対応するログ611を、ログファイル612に出力する。
処理結果判定部607は、第1の実施形態に係る図1の処理結果判定部105に対応する。処理結果判定部607は、呼び出されたメソッドの引数の入力値と処理結果(正常/異常)を、値範囲実績テーブル608に蓄積する(反映させる)。また、処理結果判定部607は、呼び出されたメソッドの呼出し経路と処理結果(正常/異常)を、呼出し経路実績リストテーブル609に蓄積する。
図7は、図6の値範囲実績テーブル608のデータ構成例を示す図である。
値範囲実績テーブル608は、第1のコンテキスト集合として、図7(a)に示される正常値範囲、または図7(b)に示される正常長さおよび正常キャラクタを含むように構成される。第1のコンテキスト集合は、例えばメソッドが過去に呼び出されたことがあり、かつ、そのメソッドの1回以上の過去の呼出しのうち、正常な処理結果を生じさせた各呼出しにおけるコンテキストである引数の入力値に基づいて定まる。
各メソッドの引数の入力値が数値であった場合には、その正常な値の範囲を示す正常値範囲が、例えば下記1.から5.に示されるステップに従って、図7(a)に例示されるように、値範囲実績テーブル608に登録、拡張されてゆく。
1.初回:値域なし
2.0を処理⇒0を登録
3.―5を処理⇒正常値範囲:−5〜0に拡張
4.4を処理⇒正常値範囲:−5〜4に拡張
5.2012を処理⇒正常値範囲:−5〜2012に拡張
(a)の例では、メソッドAについては、引数の入力値が整数値0である場合に、メソッドAの呼出し時の状態が正常であると判断できる。また、メソッドBについては、引数の入力値が整数値−5から1024までの範囲にある場合に、メソッドBの呼出し時の状態が正常であると判断できる。さらに、メソッドCについては、引数の入力値が整数値1から65535までの範囲にある場合に、メソッドCの呼出し時の状態が正常であると判断できる。
また、引数が文字列の場合には、処理結果が正常であった長さ、および、正常に処理できた文字種別(キャラクタとしての値範囲)が、図7(b)に例示されるように、値範囲実績テーブル608に登録されてゆく。図7(b)の例では、メソッドDの呼出し時には、引数の入力文字列が、長さが0〜20文字の範囲で、「a」から「z」までの小文字アルファベット文字、「+」文字、または「=」文字のいずれかのみを含む場合に、メソッドDの呼出し時の状態が正常であると判断できる。また、メソッドEの呼出し時には、引数の入力文字列が、長さが1〜256文字の範囲で、「a」から「z」までの小文字アルファベット文字、または「A」から「Z」までの大文字アルファベット文字のいずれかのみを含む場合に、メソッドEの呼出し時の状態が正常であると判断できる。
値範囲実績テーブル608は、上述の第1のコンテキスト集合に加えて、さらに第2のコンテキスト集合として、図7(a)に示される異常値範囲、または図7(b)に示される異常キャラクタを含むように構成される。第2のコンテキスト集合は、例えばメソッドが過去に呼び出されたことがあり、かつ、そのメソッドの1回以上の過去の呼出しのうち、異常な処理結果を生じさせた各呼出しにおけるコンテキストである引数の入力値に基づいて定まる。各メソッドの引数の入力値が数値であった場合には、その異常な値の範囲を示す異常値範囲が、図7(a)に例示されるように、リスト形式でチェーンされて、登録、拡張されてゆく。図7(a)の例では、メソッドAについては、異常値範囲は登録されていない。メソッドBについては、引数の入力値が整数値0または256である場合に、メソッドBの呼出し時の状態が異常であると判断できる。メソッドCについては、引数の入力値が整数値0である場合に、メソッドCの呼出し時の状態が異常であると判断できる。
また、引数が文字列の場合には、処理結果が異常であった長さ、および、異常に処理された文字種別(キャラクタとしての値範囲)が、図7(b)に例示されるように、値範囲実績テーブル608に登録されてゆく。図7(b)の例では、メソッドDの呼出し時には、引数の入力文字列が「tab」文字または空白文字のいずれかを含む場合に、メソッドDの呼出し時の状態が異常であると判断できる。
図8は、呼出し経路実績リストテーブルのデータ構成例を示す図である。
呼出し経路実績リストテーブル609は、第1のコンテキスト集合として、図8(b)に示されるような正常な呼出し経路を含むように構成される。第1のコンテキスト集合は、例えばメソッドが過去に呼び出されたことがあり、かつ、そのメソッドの1回以上の過去の呼出しのうち、正常な処理結果を生じさせた各呼出しにおけるコンテキストであるそのメソッドの呼出し経路の集合である。
正常な呼出し経路としては、以下のいずれかの呼出し経路情報を登録してよい。
<呼出し経路情報1>:その時点のメソッドのコールスタック:異常検出精度は劣るが、管理するリストのサイズは比較的小さい。
<呼出し経路情報2>:その時点のメソッド呼び出しの履歴:異常検出精度は比較的高いが、管理するリストのサイズは大きくなる。
例えば、メソッド呼び出しが図8(a)に示されるように、メソッドA,B,C,Dの順で行われる場合、メソッドDが呼び出された時点で、呼出し経路は、次のようになる。
呼出し経路情報1の場合:ACD
呼出し経路情報2の場合:ABB復帰CD
具体的には、呼出し経路実績リストテーブル609に登録される呼出し経路実績リストの例は、呼出し経路情報2を用いた場合には、図8(b)に示されるごとくとなる。呼出し経路が「ACD」、「ABB復帰CD」、または「ABB復帰BB復帰CD」の何れかの場合に、それらのメソッド呼出しが正常であると判断できる。
なお、全てのメソッド呼出しを対象とすると呼出し経路実績リストが膨大になる場合が考えられる。そのような場合には、対象とするメソッドを制限することでリストの肥大化を抑止する機構を設けてよい。例えば、Javaの場合は、パッケージ名(java.xxやcom.***.xxのクラスのメソッドは対象外とする、或いは、特定のパッケージ名のクラスのメソッドを対象とする)による制限を設けてよい。また、ライブラリ(jar:Java Archive)名による制限を設けてよい。さらに、ネイティブライブラリの場合は、モジュール名(ダイナミックリンク名:xx.dll、シェアードオブジェクト名:xx.soなど)などを、対象とするか否かの判断に用いることができる。
また、プログラムの特性によっては、例外発生が必ずしも異常ではない場合もある。呼出し経路実績リストテーブル609に対して、呼出し経路毎の実行回数や頻度による情報を追加し、その値(閾値)に応じてログレベルの切り替えを行う方式も採用可能である。
さらに、呼出し経路実績リストテーブル609は、第2のコンテキスト集合として、異常な呼出し経路を含むように構成されてもよい。第2のコンテキスト集合は、例えばメソッドが過去に呼び出されたことがあり、かつ、そのメソッドの1回以上の過去の呼出しのうち、異常な処理結果を生じさせた各呼出しにおけるコンテキストであるそのメソッドの呼出し経路の集合である。
図7および図8に例示される構成例を有する値範囲実績テーブル608および呼出し経路実績リストテーブル609を用いた、図6のAPS処理部601の動作について、図9および図10のフローチャートを用いて、以下に詳細に説明する。
図9は、図6のログレベル設定部605の処理例を示すフローチャートである。この処理例は、図5のホストサーバ501を構成する例えば後述する図15のCPU1501が、外部記憶装置1505からメモリ1502にログレベル設定処理プログラムを読み出して実行する処理である。
図9のフローチャートの処理は、図6のメソッド呼出し認識部604がメソッド呼出しを取得し、図6のJVM処理部602によるメソッドの実行が開始される直前に実行される。
まず、呼び出されたメソッドに引数があり、かつその入力値について、値範囲実績テーブル608を使って値範囲の判断ができるか否かが判定される(ステップS901)。
入力値がプリミティブな型(数値や文字列など)を有し、その範囲を判断することができ、ステップS901の判定がYESならば、図7(a)または(b)に例示される値範囲実績テーブル608が参照されることにより、引数の入力値の範囲は正常な値範囲にあるか否かが判定される(ステップS902)。
値範囲実績テーブル608(図1の蓄積情報106に対応)が第1のコンテキスト集合である正常値範囲、正常長さ、または正常キャラクタ(図7参照)を含むように構成される場合、ステップS902の判定では次のような制御が行われる。メソッドの引数の入力値が正常な値範囲に含まれない場合に、入力値が正常な値範囲に含まれる場合よりも、ログレベル(ログの詳細度)が高くなる方向に制御が行われる。
また、値範囲実績テーブル608が第2のコンテキスト集合である異常値範囲または異常キャラクタ(図7参照)を含むように構成される場合、ステップS902の判定では次のような制御が行われる。メソッドの引数の入力値が異常な範囲に含まれる場合に、入力値が異常な範囲に含まれない場合よりもログレベル(ログの詳細度)が高くなる方向に制御が行われる。
以上の判定がステップS902で行われ、引数の入力値が正常な値範囲に含まれずステップS902の判定がNOの場合には、ログ出力部606に設定されるログレベル610が高いレベルに(ログ611の詳細度が高くなるように)設定される(ステップS903)。
引数の入力値が正常な値範囲に含まれステップS902の判定がYESの場合には、ログ出力部606に設定されるログレベル610が低いレベルに(ログ611の詳細度が低くなるように)設定される可能性が残される。この場合にはさらに、呼出し経路による判断を行うために、ステップS904の処理に進む。
また、前述のステップS901で、引数の入力値が数値や文字列等のプリミティブな型ではない、または文字列であってもその形式が複雑である、または、直接引数として値を渡さないで場合には、値範囲実績テーブル608による判断はできない。引数がデータベースを検索するためのSQL文である場合や、引数が他の変数を参照するポインタ値である場合である。この結果、ステップS901の判定がNOとなった場合には、呼出し経路による判断を行うために、ステップS904の処理に進む。
ステップS904では、まず、現在のメソッドの呼出し経路が生成される。ここでは、図8の説明で前述したように、その時点のメソッドのコールスタックの内容または呼び出しの履歴の内容が参照されて呼出し経路が生成される。
次に、図8(b)に例示される呼出し経路実績リストテーブル609が参照されることにより、ステップS904で生成された呼出し経路が正常な呼出し経路に含まれるか否かが判定される(ステップS905)。
呼出し経路実績リストテーブル609(図1の蓄積情報106に対応)が第1のコンテキスト集合である正常な呼出し経路を含むように構成される場合、ステップS905の判定では次のような制御が行われる。ステップS904で生成された呼出し経路が第1のコンテキスト集合である正常な呼出し経路の集合に含まれない場合に、生成された呼出し経路が正常な呼出し経路の集合に含まれる場合よりも、ログレベル(ログの詳細度)が高くなる方向に制御が行われる。
また、呼出し経路実績リストテーブル609が第2のコンテキスト集合である異常な呼出し経路を含むように構成される場合、ステップS905の判定では次のような制御が行われる。ステップS904で生成された呼出し経路が第2のコンテキスト集合である異常な呼出し経路の集合に含まれる場合に、生成された呼出し経路が異常な呼出し経路の集合に含まれない場合よりも、ログレベル(ログの詳細度)が高くなる方向に制御が行われる。
以上の判定がステップS905で行われ、現時点での呼出し経路が正常な呼出し経路に含まれずステップS905の判定がNOの場合には、ログ出力部606に設定されるログレベル610が高いレベルに(ログ611の詳細度が高くなるように)設定される(ステップS903)。
一方、現時点での呼出し経路が正常な呼出し経路に含まれステップS905の判定がYESの場合には、ログ出力部606に設定されるログレベル610が低いレベルに(ログ611の詳細度が低くなるように)設定される(ステップS906)。
ステップS903またはS906のログレベル610の設定処理の後、図9のフローチャートの処理が終了して、図6のログレベル設定部605の処理が終了する。
以上のようにして、図6のログレベル設定部605は、値範囲実績テーブル608を用いた引数の入力値の範囲についての判断結果と、呼出し経路実績リストテーブル609を用いた呼出し経路の判断結果を組み合わせて、ログレベル610を決定できる。すなわち、引数の入力値や呼出し経路等の内部状態を加味した動的なコンテキストに基づいてログレベル610が決定される。これにより、異常な入力値または異常な内部状態の発生時にログレベル610を引き上げることが可能となり、異常の発生(または予兆)時の詳細ログ出力の精緻性を向上させることが可能となる。
図10は、図6の処理結果判定部607の処理例を示すフローチャートである。
この処理例は、図5のホストサーバ501を構成する例えば後述する図15のCPU1501が、外部記憶装置1505からメモリ1502に処理結果判定処理プログラムを読み出して実行する処理である。
図10のフローチャートの処理は、図6のJVM処理部602によるアプリケーションプログラム603のメソッドの実行が完了し、呼出し元のメソッドに制御が復帰する直前に実行される。
まず、図6のJVM処理部602において、Java例外などの異常が発生したか否かが判定される(ステップS1001)。
異常が発生せずステップS1001の判定がNOならば、現在の呼出し経路が正常な呼出し経路となるように、図8(b)に例示される呼出し経路実績リストテーブル609の内容が更新される(ステップS1002)。具体的には、現在の呼出し経路が、呼出し経路実績リストテーブル609中の第1のコンテキスト集合である正常呼出し経路の集合に追加登録される。また、呼出し経路実績リストテーブル609が第2のコンテキスト集合である異常呼出し経路の集合を保持している場合には、現在の呼出し経路が第2のコンテキスト集合である異常呼出し経路の集合から除外されるように、その内容が更新される。
その後、図6のログレベル設定部605による図9のステップS901で、呼び出されたメソッドに引数があり、かつその入力値について、値範囲実績テーブル608を使って値範囲の判断ができると判定されたか否かがチェックされる(ステップS1003)。このチェックは、例えばログレベル設定部605による図9のステップS901の判定処理の結果をホストサーバ501を構成する例えば後述する図15のメモリ1502に保持しておき、それを参照することにより行うことができる。
ステップS1003の判定がYESならば、現在の引数の入力値が正常な値範囲となるように、図7に例示される値範囲実績テーブル608の内容が更新される(ステップS1004)。具体的には、引数の入力値が値範囲実績テーブル608中の第1のコンテキスト集合である正常な値範囲に含まれるように、第1のコンテキスト集合の正常な値範囲が拡げて更新される。また、値範囲実績テーブル608が第2のコンテキスト集合である異常な値範囲を保持している場合には、引数の入力値の範囲が第2のコンテキスト集合の範囲から除外されるように、第2のコンテキスト集合の異常な値範囲が縮小して更新される。
一方、異常が発生しステップS1001の判定がYESならば、現在の呼出し経路が異常な呼出し経路となるように、図8(b)に例示される呼出し経路実績リストテーブル609の内容が更新される(ステップS1005)。具体的には、現在の呼出し経路が、呼出し経路実績リストテーブル609中の第1のコンテキスト集合である正常呼出し経路の集合から除外されるように、その内容が更新される。また、呼出し経路実績リストテーブル609が第2のコンテキスト集合である異常呼出し経路の集合を保持している場合には、現在の呼出し経路が第2のコンテキスト集合である異常呼出し経路の集合に追加登録される。
その後、ステップS1003と同様のチェックが行われる。図6のログレベル設定部605による図9のステップS901で、呼び出されたメソッドに引数があり、かつその入力値について、値範囲実績テーブル608を使って値範囲の判断ができると判定されたか否かがチェックされる(ステップS1006)。
ステップS1006の判定がYESならば、現在の引数の入力値が異常な値範囲となるように、図7に例示される値範囲実績テーブル608の内容が更新される(ステップS1007)。具体的には、引数の入力値が値範囲実績テーブル608中の第1のコンテキスト集合である正常な値範囲から除外されるように、第1のコンテキスト集合の正常な値範囲が縮小して更新される。また、値範囲実績テーブル608が第2のコンテキスト集合である異常な値範囲を保持している場合には、引数の入力値の範囲が第2のコンテキスト集合の範囲に含まれるように、第2のコンテキスト集合の異常な値範囲が拡張して更新される。
ステップS1003またはS1006の判定がNOとなった後、およびステップS1004またはS1007の処理の後、図10のフローチャートの処理が終了して、図6の処理結果判定部607の処理が終了する。
上述の処理において、ステップS1002またはS1005で設定される現在の呼出し経路は、次のようにして取得される。メソッド呼出しの発生時に図6のログレベル設定部605が実行する図9のログレベル設定処理において、ステップS904で現在の呼出し経路の生成処理が実行されていれば、それがメモリ(後述する図15のメモリ1502等)に保持されて参照される。一方、ステップS904が実行されていなければ、新たにステップS904と同様の処理が実行されて、現在の呼出し経路が生成され使用される。
値範囲実績テーブル608または呼出し経路実績リストテーブル609内の第1または第2のコンテキスト集合が更新される場合、上述したような更新条件が1回満たされたらすぐに更新されるのではなく、所定回数満たされたら更新されるように構成してもよい。
図11は、第3の実施形態に係る図5のホストサーバ501の処理機能の構成例を示すブロック図である。
図11において、第2の実施形態に係る図6の処理機能構成と同じ構成要素には同じ符号を付して示し、その説明を省略する。
図11の構成が図6の構成と異なる点は、図5のホストサーバ501がネットワーク504上に複数存在し、それぞれが図6をベースとする処理機能構成を備え、さらに、各APS処理部601がログ制御情報通信部1101を備える点である。
このログ制御情報通信部1101は、図1のログ制御情報通信部107に対応する。
例えば、#1のホストサーバ501内のJVM処理部602で実行されていたメソッドが#2のホストサーバ501内のアプリケーションプログラム603のメソッドを呼び出す場合に、以下の制御が実行される。#1のホストサーバ501内のAPS処理部601のログ制御情報通信部1101は、呼出し元のメソッドによる呼出し先のメソッドへの呼出しに含めてログ制御情報を送信する。#2のホストサーバ501内のAPS処理部601のログ制御情報通信部1101は、#1のホストサーバ501内のAPS処理部601のログ制御情報通信部1101が送信したログ制御情報を受信し、自装置内のログレベル設定部605に引き渡す。自装置内のログ出力条件設定部103は、そのログ制御情報を用いて呼び出されたメソッドにおけるログレベル610を決定し、ログ出力部606に設定する。
図12は、図11のログ制御情報通信部1101が呼出し元である場合に実行する送信処理例を示すフローチャートである。
この処理例は、図5のホストサーバ501を構成する例えば後述する図15のCPU1501が、外部記憶装置1505からメモリ1502にログ制御情報送信プログラムを読み出して実行する処理である。
図12のフローチャートの処理は、呼出し元のJVM処理部602が実行するメソッド上で、送信要求として、ソケット通信によるデータ書出しのイベントが発生した場合に起動される。
まず、JVM処理部602に問合せが行われることにより、実行中のメソッドのシステムプロパティが取得され、そこにログ制御情報出力指定がされているか否かが判定される(ステップS1201)。
ログ制御情報出力指定がされておりステップS1201の判定がYESならば、送信要求された送信データの先頭に、ログ制御情報が付加されて、送信処理が実行される(ステップS1202)。
ログ制御情報出力指定がされておらずステップS1201の判定がNOならば、送信要求された送信データに対して通常の送信処理が実行される(ステップS1203)。
ステップS1202またはS1203の送信処理の後、図12のフローチャートの処理が終了し、図11のログ制御情報通信部1101の送信処理が終了する。
図13は、図11のログ制御情報通信部1101が呼出し先である場合に実行する第1の受信処理例を示すフローチャートである。
この処理例は、図5のホストサーバ501を構成する例えば後述する図15のCPU1501が、外部記憶装置1505からメモリ1502に第1のログ制御情報受信プログラムを読み出して実行する処理である。
第1の実施形態に係るログ制御情報通信部107の説明で前述したように、ログ制御情報としては、呼出し元であるメソッドにおいて設定されたログレベルと、呼出し元であるメソッドの呼出し経路のいずれを採用することができる。
図13は、ログ制御情報として呼出し元であるメソッドにおいて設定されたログレベルが採用される場合の、呼出し先でのログ制御情報の受信処理を示すものである。
この処理例は、受信イベントが発生した場合に起動される。
まず、受信イベントで特定される受信データの先頭にログ制御情報が付加されているか否かが判定される(ステップS1301)。
ログ制御情報が付加されておりステップS1301の判定がYESならば、そのログ制御情報がログレベルXとして受信される(ステップS1302)。このログレベルXは、ホストサーバ501を構成する例えば後述する図15のメモリ1502に保持される。
ステップS1302の処理の後、またはステップS1301の判定がNOとなった後、受信データの受信処理が実行される(ステップS1303)。
その後、その受信データに基づいてメソッドの呼出し処理が実行される(ステップS1304)。この呼出しは、呼出し側、例えば#2のホストサーバ501内のAPS処理部601のメソッド呼出し認識部604によって認識される。
そして、第2の実施形態の説明で前述したようにして、#2のホストサーバ501内のAPS処理部601のログレベル設定部605が起動し、ログレベルが決定される。このログレベル設定部605が出力するログレベルが、ログレベルYとして取得される(ステップS1305)。このログレベルYは、ホストサーバ501を構成する例えば後述する図15のメモリ1502に保持される。
次に、ステップS1302が実行されてログレベルXが保持されたか否かが判定される(ステップS1306)。
ログレベルXが保持されていれば、ステップS1302で保持された呼出し元から伝播されたログレベルXと、ステップS1305で保持された自装置内のログレベル設定部605が出力したログレベルYのうち、高いほうのログレベルが、設定すべきログレベル610としてログ出力部606に設定される(ステップS1307)。
一方、ログレベルXが保持されていなければ、ステップS1305で保持された自装置内のログレベル設定部605が出力したログレベルYが、設定すべきログレベル610としてログ出力部606に設定される(ステップS1308)。
ステップS1307またはS1308の処理の後、図13のフローチャートの処理が終了し、図11のログ制御情報通信部1101の受信処理が終了する。
図14は、図11のログ制御情報通信部1101が呼出し先である場合に実行する第2の受信処理例を示すフローチャートである。
この処理例は、図5のホストサーバ501を構成する例えば後述する図15のCPU1501が、外部記憶装置1505からメモリ1502に第2のログ制御情報受信プログラムを読み出して実行する処理である。
図14は、ログ制御情報として呼出し元であるメソッドの呼出し経路が採用される場合の、呼出し先でのログ制御情報の受信処理を示すものである。
この処理例は、図13の第1の受信処理例と同様に、受信イベントが発生した場合に起動される。
まず、受信イベントで特定される受信データの先頭にログ制御情報が付加されているか否かが判定される(ステップS1401)。
ログ制御情報が付加されておりステップS1401の判定がYESならば、次の制御処理が実行される(ステップS1402)。メソッド呼出しの発生時に実行される前述した図9のログレベル設定処理のステップS904で現在の呼出し経路の生成処理が実行されるときに、生成された現在の呼出し経路の先頭に、ログ制御情報である呼出し元経路情報を付加するように指示が行われる。具体的には例えば、呼出し元経路情報とともに所定の指示情報がメモリ(例えば後述する図15のメモリ1502)に設定され、図9のステップS904の実行時にその内容が参照される。
その後、受信データの受信処理が実行される(ステップS1403)、さらに、その受信データに基づいてメソッドの呼出し処理が実行される(ステップS1404)。この呼出しは、呼出し側、例えば#2のホストサーバ501内のAPS処理部601のメソッド呼出し認識部604によって認識される。
ステップS1404の処理の後、図14のフローチャートの処理が終了し、図11のログ制御情報通信部1101の受信処理が終了する。
以上の受信処理により、図9のログレベル設定処理のステップS904で現在の呼出し経路の生成処理が実行されるときに、生成された現在の呼出し経路の先頭に、呼出し元の経路が付加されることになる。そして、図9のステップS905で、呼出し元の経路も含めて呼出し経路が判断される。これにより、プログラム(プロセス、マシン、メソッド)を跨いで異常の発生(または予兆)を伝播させることができ、情報処理システム全体として異常の発生(または予兆)をとらえて、詳細ログ出力の精緻性を向上させることが可能となる。
ここで、呼出し元のメソッドと呼出し先のメソッドが同一のホストサーバ501上にある場合には、そのホストサーバ501内のAPS処理部601のログ制御情報通信部1101が、図12の送信処理と図13または図14の受信処理を実行することになる。ソケット通信であれば、通信がソケットにカプセル化されるため、ログ制御情報通信部1101は、呼出し元のホストサーバ501が自装置と同一であるか否かは、特に意識する必要はない。
図15は、第1の実施形態に係る情報処理装置100のハードウェア構成例を示す図である。
図15に示される情報処理装置100は、CPU(中央演算処理装置)1501、メモリ1502、入力装置1503、出力装置1504、外部記憶装置1505、可搬記録媒体1509が挿入される可搬記録媒体駆動装置1506、及び通信インタフェース1507を有し、これらがバス1508によって相互に接続された構成を有する。同図に示される構成は上記情報処理装置100を実現できるコンピュータの一例であり、そのようなコンピュータはこの構成に限定されるものではない。
CPU1501は、情報処理装置100の全体の制御を行うプロセッサである。メモリ1502は、プログラムの実行、データ更新等の際に、外部記憶装置1505(或いは可搬記録媒体1509)に記憶されているプログラム又はデータを一時的に格納するRAM等のメモリである。CUP1501は、プログラムを外部記憶装置1505からメモリ1502に読み出して実行することにより、全体の制御を行う。
入力装置1503は、ユーザによるキーボードやマウス等による入力操作を検出し、その検出結果をCPU1501に通知する。
出力装置1504は、CPU1501の制御によって送られてくるデータをディスプレイ装置等の表示装置や印刷装置に出力する。
外部記憶装置1505は、例えばハードディスク記憶装置である。主に各種データやプログラムの保存に用いられる。
可搬記録媒体駆動装置1506は、光ディスクや、SDメモリカード、コンパクトフラッシュメモリカード等の可搬記録媒体1509を収容する。光ディスクには、DVD(Digital Versatile Disc)やCD−ROM(Compact Disc Read Only Memory)等がある。可搬記録媒体1509を収容した可搬記録媒体駆動装置1506は、外部記憶装置1505の補助の役割を有する。
通信インタフェース1507は、例えばLAN(ローカルエリアネットワーク)又はWAN(ワイドエリアネットワーク)の通信回線を接続するための装置である。
本実施形態による情報処理装置100は、以下に説明する機能を搭載したプログラムをCPU1501が実行することで実現される。そのプログラムは、例えば外部記憶装置1505や可搬記録媒体1509に記録して配布してもよく、或いはネットワーク接続装置1507によりネットワークから取得できるようにしてもよい。
以上説明した実施形態、特に第2,第3の実施形態は、アプリケーションプログラム603がJVM処理部602で実行されるJavaプログラムであることを例に説明したが、図1の処理機能構成を有する第1の実施形態に示されるように、ログ取得対象は、Javaプログラムのメソッドやプロセス、スレッドなどに限定される必要はなく、一般的なプログラム等に適用することが可能である。
以上の各実施形態に関して、更に以下の付記を開示する。
(付記1)
コンピュータに、
ログ取得対象の呼び出しの際に、前記呼び出しのコンテキストを取得し、
前記ログ取得対象に対する呼び出しのコンテキストと処理結果とを対応づけた情報を蓄積した蓄積情報、および、取得した前記コンテキストに基づき、当該ログ取得対象におけるログの出力条件を設定する、
ことを含む処理を実行させることを特徴とするログ出力条件設定プログラム。
(付記2)
前記呼び出しのコンテキストと処理結果を対応づけた情報を前記蓄積情報に蓄積する、
ことを含む処理を前記コンピュータに実行させることを特徴とする付記1に記載のログ出力条件設定プログラム。
(付記3)
前記コンテキストは、前記ログ取得対象が呼び出されるときの入力値と、前記ログ取得対象の呼出し経路を含み、
前記ログ取得対象に対する呼び出しの入力値と処理結果とを対応づけた情報を蓄積した入力値蓄積情報、および、取得した前記入力値に基づいて、または、前記ログ取得対象に対する呼出し経路と処理結果とを対応づけた情報を蓄積した呼出し経路蓄積情報、および、取得した前記呼出し経路に基づいて、前記ログの出力条件を設定する、
ことを含む処理を前記コンピュータに実行させることを特徴とする付記1または2のいずれかに記載のログ出力条件設定プログラム。
(付記4)
前記蓄積情報は、前記ログ取得対象が過去に呼び出されたことがあり、かつ、前記ログ取得対象の1回以上の過去の呼出しのうち、正常な処理結果を生じさせた各呼出しにおけるコンテキストに基づいて定まる第1のコンテキスト集合を含み、
前記ログ取得対象が呼び出されるコンテキストが前記第1のコンテキスト集合に含まれない場合に、前記ログ取得対象が呼び出されるコンテキストが前記第1のコンテキスト集合に含まれる場合よりも前記ログの詳細度が高くなるように、前記ログの出力条件を設定する、
ことを含む処理を前記コンピュータに実行させることを特徴とする付記1ないし3のいずれかに記載のログ出力条件設定プログラム。
(付記5)
前記呼び出されたログ取得対象の処理結果が正常であった場合に、前記認識したコンテキストが前記第1のコンテキスト集合に含まれるように当該第1のコンテキスト集合を更新する、
ことを含む処理を実行させることを特徴とする付記4に記載のログ出力条件設定プログラム。
(付記6)
前記呼び出されたログ取得対象の処理結果が異常であった場合に、前記認識したコンテキストが前記第1のコンテキスト集合から除外されるように当該第1のコンテキスト集合を更新する、
ことを含む処理を実行させることを特徴とする付記4または5のいずれかに記載のログ出力条件設定プログラム。
(付記7)
前記蓄積情報は、前記ログ取得対象が過去に呼び出されたことがあり、かつ、前記ログ取得対象の1回以上の過去の呼出しのうち、異常な処理結果を生じさせた各呼出しにおけるコンテキストに基づいて定まる第2のコンテキスト集合を含み、
前記ログ取得対象が呼び出されるコンテキストが前記第2のコンテキスト集合に含まれる場合に、前記ログ取得対象が呼び出されるコンテキストが前記第2のコンテキスト集合に含まれない場合よりも前記ログの詳細度が高くなるように、前記ログの出力条件を設定する、
ことを含む処理を前記コンピュータに実行させることを特徴とする付記1ないし6のいずれかに記載のログ出力条件設定プログラム。
(付記8)
前記呼び出されたログ取得対象の処理結果が異常であった場合に、前記認識したコンテキストが前記第2のコンテキスト集合に含まれるように当該第2のコンテキスト集合を更新する、
ことを含む処理を実行させることを特徴とする付記7に記載のログ出力条件設定プログラム。
(付記9)
前記呼び出されたログ取得対象の処理結果が正常であった場合に、前記認識したコンテキストが前記第2のコンテキスト集合から除外されるように当該第2のコンテキスト集合を更新する、
ことを含む処理を実行させることを特徴とする付記7または8のいずれかに記載のログ出力条件設定プログラム。
(付記10)
前記ログ取得対象が前記コンピュータまたは他のコンピュータ上で実行される他のプログラムから呼び出されるときに、前記他のプログラムから前記ログ取得対象への呼出しに含めてログ制御情報を伝播し、当該ログ制御情報を用いて前記ログ取得対象における前記ログの出力条件を設定する、
ことを含む処理を実行させることを特徴とする付記1ないし9のいずれかに記載のログ出力条件設定プログラム。
(付記11)
前記ログ制御情報は、前記他のプログラムにおいて設定されたログの出力条件であり、
当該ログ取得対象に対応して設定したログの出力条件と、前記他のプログラムから伝播された前記他のプログラムのログの出力条件とを比較して、当該ログ取得対象における最終的なログの出力条件を設定する、
ことを含む処理を実行させることを特徴とする付記11に記載のログ出力条件設定プログラム。
(付記12)
前記ログ制御情報は、前記他のプログラムの呼出し経路を含み、
前記ログ取得対象が呼び出される際に、前記他のプログラムの呼出し経路を当該ログ取得対象の呼出し経路の先頭に付加して、当該ログ取得対象の新たな呼出し経路とし、
前記新たな呼出し経路を前記ログ取得対象の呼出し経路と処理結果とを対応づけた呼出し経路蓄積情報を参照して判断することにより、前記ログの出力条件を設定する、
ことを含む処理を前記コンピュータに実行させることを特徴とする付記11に記載のログ出力条件設定プログラム。
(付記13)
前記コンテキストは、前記ログ取得対象が呼び出されるときに前記ログ取得対象に対して引数として与えられる入力値または前記ログ取得対象の呼出し経路のうち少なくとも1つを含む、
ことを特著とする付記1ないし12のいずれかに記載のログ出力条件設定プログラム。
(付記14)
前記ログ取得対象は、前記コンピュータで実行されるプログラムであるプロセス、スレッド、アプリケーションプログラム、プログラムモジュール、関数プログラム、プロシージャ、またはオブジェクト指向言語で記述されるクラスにおいて定義されるメソッドのうちのいずれかである、
ことを特徴とする付記1ないし13のいずれかに記載のログ出力条件設定プログラム。
(付記15)
ログ取得対象の呼び出しの際に、前記呼び出しのコンテキストを取得するコンテキスト取得部と、
前記ログ取得対象に対する呼び出しのコンテキストと処理結果とを対応づけた情報を蓄積した蓄積情報、および、取得した前記コンテキストに基づき、当該ログ取得対象におけるログの出力条件を設定するログ出力条件設定部と、
を備えることを特徴とするログ出力条件設定装置。
(付記16)
ログ取得対象の呼び出しの際に、前記呼び出しのコンテキストを取得し、
前記ログ取得対象に対する呼び出しのコンテキストと処理結果とを対応づけた情報を蓄積した蓄積情報、および、取得した前記コンテキストに基づき、当該ログ取得対象におけるログの出力条件を設定する、
ことを特徴とするログ出力条件設定方法。
101 ログ取得対象処理部
102 コンテキスト取得部
103 ログ出力条件設定部
104、606 ログ出力部
105、607 処理結果判定部
106 蓄積情報
107 ログ制御情報通信部
108 ログ出力条件
109 ログ
110 ログファイル
501 ホストサーバ
502 クライアント
503 管理端末
504 ネットワーク
601 APS(APplication Server)処理部
602 JVM(Java Virtual Machine)処理部
603 アプリケーションプログラム
604 メソッド呼出し認識部
605 ログレベル設定部
608 値範囲実績テーブル
609 呼出し経路実績リストテーブル
610 ログレベル
611 ログ
612 ログファイル
1101 ログ制御情報通信部
1402 通信路
1501 CPU(中央演算処理装置)
1502 メモリ
1503 入力装置
1504 出力装置
1505 外部記憶装置
1506 可搬記録媒体駆動装置
1507 通信インタフェース
1508 バス
1509 可搬記録媒体

Claims (8)

  1. コンピュータに、
    ログ取得対象の呼び出しの際に、前記呼び出しのコンテキストを取得し、
    前記ログ取得対象に対する呼び出しのコンテキストと処理結果とを対応づけた情報を蓄積して得られた蓄積情報であって正常な処理結果を生じさせたコンテキストと異常な処理結果を生じさせたコンテキストとを分類する該蓄積情報、および、取得した前記コンテキストに基づき、当該ログ取得対象におけるログの出力条件を設定する、
    ことを含む処理を実行させることを特徴とするログ出力条件設定プログラム。
  2. 前記呼び出しのコンテキストと処理結果とを対応づけた情報を前記蓄積情報に蓄積する、
    ことを含む処理を前記コンピュータに実行させることを特徴とする請求項1に記載のログ出力条件設定プログラム。
  3. 前記コンテキストは、前記ログ取得対象が呼び出されるときの入力値と、前記ログ取得対象の呼出し経路を含み、
    前記ログ取得対象に対する呼び出しの入力値と処理結果とを対応づけた情報を蓄積した入力値蓄積情報、および、取得した前記入力値に基づいて、または、前記ログ取得対象に対する呼出し経路と処理結果とを対応づけた情報を蓄積した呼出し経路蓄積情報、および、取得した前記呼出し経路に基づいて、前記ログの出力条件を設定する、
    ことを含む処理を前記コンピュータに実行させることを特徴とする請求項1または2のいずれかに記載のログ出力条件設定プログラム。
  4. 前記ログ取得対象が前記コンピュータまたは他のコンピュータ上で実行される他のプログラムから呼び出されるときに、前記他のプログラムから前記ログ取得対象への呼出しに含めてログ制御情報を伝播し、当該ログ制御情報を用いて前記ログ取得対象における前記ログの出力条件を設定する、
    ことを含む処理を実行させることを特徴とする請求項1ないし3のいずれかに記載のログ出力条件設定プログラム。
  5. 前記ログ制御情報は、前記他のプログラムにおいて設定されたログの出力条件を含み、
    当該ログ取得対象に対応して設定したログの出力条件と、前記他のプログラムから伝播された前記他のプログラムのログの出力条件とを比較して、当該ログ取得対象における最終的なログの出力条件を設定する、
    ことを含む処理を実行させることを特徴とする請求項4に記載のログ出力条件設定プログラム。
  6. 前記ログ制御情報は、前記他のプログラムの呼出し経路を含み、
    前記ログ取得対象が呼び出される際に、前記他のプログラムの呼出し経路を当該ログ取得対象の呼出し経路の先頭に付加して、当該ログ取得対象の新たな呼出し経路とし、
    前記新たな呼出し経路を前記ログ取得対象の呼出し経路と処理結果とを対応づけた呼出し経路蓄積情報を参照して判断することにより、前記ログの出力条件を設定する、
    ことを含む処理を前記コンピュータに実行させることを特徴とする請求項4に記載のログ出力条件設定プログラム。
  7. ログ取得対象の呼び出しの際に、前記呼び出しのコンテキストを取得するコンテキスト取得部と、
    前記ログ取得対象に対する呼び出しのコンテキストと処理結果とを対応づけた情報を蓄積して得られた蓄積情報であって正常な処理結果を生じさせたコンテキストと異常な処理結果を生じさせたコンテキストとを分類する該蓄積情報、および、取得した前記コンテキストに基づき、当該ログ取得対象におけるログの出力条件を設定するログ出力条件設定部と、
    を備えることを特徴とするログ出力条件設定装置。
  8. ログ取得対象の呼び出しの際に、前記呼び出しのコンテキストを取得し、
    前記ログ取得対象に対する呼び出しのコンテキストと処理結果とを対応づけた情報を蓄積して得られた蓄積情報であって正常な処理結果を生じさせたコンテキストと異常な処理結果を生じさせたコンテキストとを分類する該蓄積情報、および、取得した前記コンテキストに基づき、当該ログ取得対象におけるログの出力条件を設定する、
    ことを特徴とするログ出力条件設定方法。
JP2013212334A 2013-10-09 2013-10-09 ログ出力条件設定プログラム、装置、および方法 Active JP6179331B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2013212334A JP6179331B2 (ja) 2013-10-09 2013-10-09 ログ出力条件設定プログラム、装置、および方法
US14/477,985 US9804908B2 (en) 2013-10-09 2014-09-05 Log output condition setting method and apparatus

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2013212334A JP6179331B2 (ja) 2013-10-09 2013-10-09 ログ出力条件設定プログラム、装置、および方法

Publications (2)

Publication Number Publication Date
JP2015075964A JP2015075964A (ja) 2015-04-20
JP6179331B2 true JP6179331B2 (ja) 2017-08-16

Family

ID=52777957

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2013212334A Active JP6179331B2 (ja) 2013-10-09 2013-10-09 ログ出力条件設定プログラム、装置、および方法

Country Status (2)

Country Link
US (1) US9804908B2 (ja)
JP (1) JP6179331B2 (ja)

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB2542370B (en) * 2015-09-16 2020-05-27 Arm Ip Ltd A system for monitoring a plurality of distributed devices
JP6920800B2 (ja) * 2016-09-23 2021-08-18 東芝テック株式会社 決済装置、プログラムおよびログ記録方法
US10509694B2 (en) * 2017-06-23 2019-12-17 Microsoft Technology Licensing, Llc System and methods for optimal error detection in programmatic environments
CN108920349A (zh) * 2018-06-25 2018-11-30 郑州云海信息技术有限公司 日志数据的管理方法和装置
US11221938B2 (en) 2018-12-12 2022-01-11 International Business Machines Corporation Real-time collaboration dynamic logging level control
CN110399107B (zh) * 2019-07-24 2023-08-29 深圳市盟天科技有限公司 日志打印方法、装置、存储介质及设备
US11768701B2 (en) * 2019-09-17 2023-09-26 Western Digital Technologies, Inc. Exception analysis for data storage devices
CN111159128B (zh) * 2019-12-30 2022-04-22 浪潮电子信息产业股份有限公司 一种日志输出方法、装置和计算机可读存储介质

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH10124350A (ja) * 1996-10-22 1998-05-15 Toshiba Microelectron Corp マイクロコンピュータ用プログラムのデバッグ方法及びデバッグ装置
JP2004094374A (ja) 2002-08-29 2004-03-25 Ntt Comware Corp ロギングシステム
JP4473766B2 (ja) * 2005-04-04 2010-06-02 株式会社日立製作所 計算機システム、ログ収集方法、及びコンピュータプログラム
JP2008015733A (ja) * 2006-07-05 2008-01-24 Hitachi Ltd ログ管理計算機
JP2009205488A (ja) 2008-02-28 2009-09-10 Mitsubishi Electric Corp ロギング装置および記録媒体
US8473925B2 (en) * 2010-05-11 2013-06-25 Ca, Inc. Conditional dynamic instrumentation of software in a specified transaction context
JP5565153B2 (ja) 2010-07-07 2014-08-06 富士通株式会社 プログラム、情報処理装置、及び情報処理装置の制御方法
JP2012190219A (ja) * 2011-03-10 2012-10-04 Fujitsu Ltd 情報処理装置、およびトレースログ取得方法
JP2013161362A (ja) * 2012-02-07 2013-08-19 Toyota Motor Corp 情報処理装置、プログラム実行方法
US9342438B2 (en) * 2013-03-15 2016-05-17 Yahoo! Inc. Method and system for data-triggered dynamic log level control

Also Published As

Publication number Publication date
US20150100835A1 (en) 2015-04-09
US9804908B2 (en) 2017-10-31
JP2015075964A (ja) 2015-04-20

Similar Documents

Publication Publication Date Title
JP6179331B2 (ja) ログ出力条件設定プログラム、装置、および方法
US11263071B2 (en) Enabling symptom verification
US8806649B2 (en) Generating vulnerability reports based on application binary interface/application programming interface usage
US9811356B2 (en) Automated software configuration management
US9619449B2 (en) Compact encoding of node locations
CN110213207B (zh) 一种基于日志分析的网络安全防御方法及设备
US8812683B2 (en) Service scripting framework
US8499294B2 (en) Persisting the changes for managed components in an application server
JP5652480B2 (ja) データベース更新通知方法
US10379914B2 (en) System and method for achieving specific behaviors by intercepting file access calls in a mainframe rehosting platform
US11321090B2 (en) Serializing and/or deserializing programs with serializable state
US20130111018A1 (en) Passive monitoring of virtual systems using agent-less, offline indexing
CN108664291A (zh) 容器组的构建方法和装置
US20220215386A1 (en) Transaction management device, non-transitory computer-readable recording medium having stored therein transaction management program, and transaction management method
US8984124B2 (en) System and method for adaptive data monitoring
JP2023024365A (ja) ソフトウェアバージョン間のapi下位互換性の検出
US20220398239A1 (en) Intelligent support bundle collection
KR101798705B1 (ko) 유연성을 갖춘 메타데이터 구성 기법
KR102337962B1 (ko) 마이크로서비스 아키텍처 애플리케이션 실행 시스템과 방법 및 이를 위한 컴퓨터 프로그램
US11263115B2 (en) Problem diagnosis technique of memory corruption based on regular expression generated during application compiling
US8423957B2 (en) Using the z/OS load module system status index to distinguish product tag files
WO2012111167A1 (ja) トレース情報取得方法、コンピュータシステム及びプログラム
WO2016099966A1 (en) Append structured data system for maintaining structured format compatibility
US11689630B2 (en) Request processing method and apparatus, electronic device, and computer storage medium
JP6011712B2 (ja) 修正管理装置、修正管理方法、及び修正管理プログラム

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20160606

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20170126

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20170207

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20170403

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: 20170620

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20170703

R150 Certificate of patent or registration of utility model

Ref document number: 6179331

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150