JP3979000B2 - ログ情報取得出力方法および該方法を実現するプログラムを記録した記録媒体 - Google Patents
ログ情報取得出力方法および該方法を実現するプログラムを記録した記録媒体 Download PDFInfo
- Publication number
- JP3979000B2 JP3979000B2 JP2000358930A JP2000358930A JP3979000B2 JP 3979000 B2 JP3979000 B2 JP 3979000B2 JP 2000358930 A JP2000358930 A JP 2000358930A JP 2000358930 A JP2000358930 A JP 2000358930A JP 3979000 B2 JP3979000 B2 JP 3979000B2
- Authority
- JP
- Japan
- Prior art keywords
- log
- level
- information
- output
- option
- 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.)
- Expired - Fee Related
Links
Images
Landscapes
- Debugging And Monitoring (AREA)
Description
【発明の属する技術分野】
本発明は、コンピュータプログラムのログ情報を取得する場合のログレベルを定義するログレベル定義方法に係り、特に、関数もしくは処理ごとに所望するログ情報を出力することが可能なログレベル定義方法に関する。
【0002】
【従来の技術】
情報処理装置における状態情報や障害情報などはログ情報(履歴、ジャーナル)として保存され、システムの保全対策、障害の回復処理、信頼性向上対策などに利用される。従来のログ取得方法においては、アプリケーションプログラムで初期化処理を行う際に、いくつかのオプションを選択して、そのオプションで定義されたログを取得するようにしていた。これによると、例えば、データベースへの参照コマンドのログを取得するオプションや、データベースへの書込みコマンドのログを取得するオプションなどいくつかの処理内容に応じて、最適なログの取得内容を定義することができる。
【0003】
【発明が解決しようとする課題】
しかしながら、上述した従来技術では、例えば、データベース接続など詳細にログを取得したい関数と、データベース検索途中などあまり詳細にログを取得したくない処理が混在して存在する場合に、それらを区別してログを取得することができないという問題があった。
【0004】
また、関数ごとにログの取得詳細度を変えるには、プログラムコーディングの際に予めオプションを記述しておかなければならず、後でアプリケーションユーザの要求に基づいてこれを変更することはできないという問題があった。
【0005】
また、このようにオプションで定義されたログ出力方法は、プログラム処理の高速化の点で最適化されていないという問題があった。
【0006】
本発明の目的は、ユーザが関数もしくは処理ごとに所望するログ情報を出力するためのログレベルを定義するログレベル定義方法、また、ユーザが予め定義したログレベル定義情報に基づいて、アプリケーションプログラムの要求に基づいたログレベルでの出力を、プログラムのソースコードを書き換えることなく変更することができるログレベル定義方法を提供することである。
【0007】
本発明の他の目的は、前記ログレベル定義情報をプログラムの全体処理が高速化するように最適化して変更し、プログラムのソースコードを書き換えることなく、前記最適化されたログレベル定義情報に基づいてログ情報を出力することのできるログレベル定義方法を提供することである。
【0008】
本発明の他の目的は、上述したログレベル定義方法を記録した記録媒体を提供することである。
【0009】
【課題を解決するための手段】
本発明は、上記目的を達成するために、関数もしくは処理ごとに少なくとも1つ以上のログレベルおよびデフォルトログレベルを定義し、該関数もしくは処理ごとに定義した前記ログレベルのうちの1つ以上のログレベルまたは前記デフォルトログレベルが指定された場合にはその指定されたログレベルまたはデフォルトログレベルを採用するとともに、何も指定されない場合には前記デフォルトログレベルを採用するようにしたこと、該ログレベルの定義は、どの関数もしくはどの処理がどのログレベルに当たるかを定義するものであり、対応する関数もしくは処理がプログラム実行中に参照可能であることを特徴としている。
【0010】
さらに、アプリケーションプログラムが、各ログレベルが如何なるログ情報を取得するかを定義したログレベル定義情報を、前記関数もしくは処理に入力し、該関数もしくは処理が、前記入力されたログレベル定義情報に基づいてログの取得の判定を行なうこと、また、その場合のログレベル定義情報は、処理のコストまたはプログラム実行中の処理の負荷に応じて変更可能としたことを特徴としている。
【0011】
さらに、本発明の記録媒体は、上記各ログレベル定義方法における処理をプログラムコード化して記録したコンピュータ読み取り可能な記録媒体である。
【0012】
【発明の実施の形態】
(発明の概要)
本発明は、アプリケーションプログラムの初期化処理において定義されるログレベル定義情報と、このログレベル定義情報に基づいて各関数もしくは各処理ごとにレベルを定義するための入出力手段と、各関数もしくは各処理から参照することができ、各関数もしくは各処理ごとにレベルを定義したログレベル定義テーブルとを備える。また、さらにアプリケーションプログラム実行時の処理負荷や処理時間などを計測する手段と、計測結果に基づいてログレベル定義テーブルの内容を書き換える手段を備える。
【0013】
これによって、ユーザが関数もしくは処理ごとに所望するログ情報を出力するためのログレベルを定義することができ、またアプリケーションプログラムの要求に基づいたログレベルでの出力を、プログラムのソースコードを書き換えることなく変更することが可能になる。また、ログレベル定義情報をプログラムの全体処理が高速化するように最適化し、プログラムのソースコードを書き換えることなく最適化されたログレベル定義情報に基づいてログ情報を出力することが可能になる。
【0014】
(第一の実施例)
以下、本発明の第一の実施例を、図面を用いて詳細に説明する。
図1は、本実施例を説明するためのシステム構成の模式図である。
同図において、101は、コンピュータ1(A)内のメモリに読み込まれた本実施例に係る機能ブロック構成を示している。101は、外部記憶装置108、入出力装置109、コンピュータ2(B)にネットワークを介して接続されている。101内の各処理部を形成するプログラムは図示しないCPUなどと連携して所望の処理機能を遂行する。
【0015】
コンピュータ2(B)のメモリ111には本実施例でログレベル定義取得方法を呼び出す側のアプリケーションプログラムAP(112)が読み込まれている。ここで101を含むコンピュータ1(A)とコンピュータ2(B)とは同一のコンピュータであってもよい。本実施例においては、101は少なくとも1つの目的のために機能する処理を持ち、処理部A(105)および処理部B(106)を含んでいる。101は処理部A(105)のみの場合もあり、あるいは処理部Aおよび処理部Bの他に1以上の処理部を持つこともできる。
【0016】
初期設定処理部102は、呼び出し側アプリケーションプログラムAP(112)が利用することのできるログレベルの初期設定を行う処理であって、ログレベル定義テーブル1(103)を用いてログ出力フォーマットを定義する。ログレベル定義テーブル1(103)は、ログレベルのオプションと出力方法のオプションが予め定義されており、ログとその出力フォーマットを定めるために参照されるテーブルである。ログレベル定義テーブル2(104)は各レベルとそのレベルに対応する関数のリストである。
【0017】
処理部A(105)および処理部B(106)は、いずれもアプリケーションプログラムAP(112)から呼び出される処理部である。処理部A(105)は、少なくともログレベル入力部1051、その他のアプリケーションプログラム本来の目的を果たすための処理部1052、ログ情報取得部1053から構成され、処理部B(106)は、少なくともログレベル入力部1061、その他のアプリケーションプログラム本来の目的を果たすための処理部1062、ログ情報取得部1063から構成されている。ここでは処理部として処理部A(105)と処理部B(106)の2つある例を示したが、2つ以上の処理部があってもよいことは先に述べた通りである。
【0018】
ログ出力処理部107は、本実施例のログ取得方法に従って、処理部A(105)のログ情報取得部1051または処理部B(106)のログ情報取得部1061によって得たログ情報を、外部記憶装置108もしくは入出力装置109に出力するための処理部である。
【0019】
最適化処理部110は、ログレベルの最適化処理を行い、ログレベル定義テーブル2(104)を更新するための処理部であり、最適化を行わない場合は必要でない。
【0020】
図1において、アプリケーションプログラムAP(112)は、まず、初期設定処理部102によってアプリケーションプログラム全体で利用可能なログレベルの定義を行い、次にユーザが選択した処理部A(105)で使用するログレベルの値を処理部A(105)のログレベル入力部1051に入力として受け渡し、処理部A(105)のその他の処理部1052でアプリケーションプログラム本来の目的を達成するための処理を行う過程において指定されたレベルでのログの取得を行う。取得されたログ情報はログ出力処理部107によって外部記憶装置108もしくは入出力装置109に出力される。
【0021】
続いてアプリケーションプログラムAP(112)は、処理部A(105)の次に実行される処理部B(106)に対して、ユーザが選択した処理部B(106)で使用するログレベルの値を処理部B(106)に入力として受け渡し、処理部B(106)でアプリケーションプログラム本来の目的を達成するための処理を行う過程において指定されたレベルでのログの取得を行う。以下同様に、アプリケーションプログラムAP(112)が必要とする処理において、ログレベルの指定とそのレベルに基づいたログ情報の取得および出力が繰り返される。
【0022】
図2は、本実施例における初期設定処理部102の処理フローチャートを示す図である。
アプリケーションプログラムAP(112)の初期化処理が行われるとき、本実施例のログレベル定義取得方法の初期化もこの初期設定処理部102内にて行われる。
【0023】
同図に示すように、まず、ステップ201でアプリケーションプログラムAP(112)から渡された入力情報にログレベル定義テーブル1(103)のログレベル設定があるかどうか判定する。ステップ201における判定の結果、ログレベル設定があれば(ステップ201:Y)、次に、ステップ202においてログレベルオプションの設定があるかどうか判定する。
【0024】
ステップ202における判定の結果、ログレベルオプションの設定があれば(ステップ202:Y)、次に、ステップ204においてログレベル定義テーブル1(103)を参照して設定されたログレベル情報を読み込む。
【0025】
次に、ステップ205において同じくアプリケーションプログラムAP(112)から渡された入力情報にログ出力内容オプションの設定があるかどうか判定する。ステップ205における判定の結果、もしログ出力内容オプションの設定があれば(ステップ205:Y)、ステップ207においてログレベル定義テーブル1(103)を参照して設定された出力内容を読み込む。
【0026】
また、ステップ201の判定の結果、ログレベル設定がされていなかった場合は(ステップ201:N)、ステップ208において定義テーブル1(103)を参照してデフォルトのレベル情報および出力内容を読み込む。
【0027】
また、ステップ202の判定の結果、ログレベルオプションが指定されていなかった場合は(ステップ202:N)、ステップ203においてログレベル定義テーブル1(103)を参照してデフォルトログレベル情報を読み込む。
【0028】
また、ステップ205の判定の結果、ログ出力オプションが指定されていなかった場合は(ステップ205:N)、ステップ206においてログレベル定義テーブル1(103)を参照してデフォルトの出力内容を読み込む。
【0029】
以上のようにして得られたログレベルとログ出力内容を基に、ステップ209において、この二つの値を組み合わせて当該アプリケーションプログラム用としてログ出力部107が利用可能なログ情報出力フォーマットを定義する。
【0030】
図7は、本実施例におけるログ情報出力フォーマットの例を示す図である。
ここで、図7のログ情報出力フォーマット(700)について説明する。
【0031】
図7のログ情報出力フォーマット(700)の例では、まず初期情報として、ログ出力先、アプリケーションプログラムが利用可能なログレベル定義、アプリケーションプログラムが利用可能なログ出力情報の定義を出力し、アプリケーションプログラムの開始を記録する(以上図7の(イ)参照)。
【0032】
続く各処理部A、B・・それぞれについて、処理内部で定義されるログレベル、ログ出力情報を出力し、処理の開始、各関数のログ出力、処理の終了のログを、それぞれ定められたフォーマットで出力する。最後にアプリケーションプログラム終了のログを出力して終わる(以上、図7の(ロ)参照)。
【0033】
次に、ログレベル定義テーブルにおける各ログレベルおよび各ログ出力内容オプションについて詳細に説明する。
【0034】
図3は、本実施例におけるログレベル定義テーブル1(103)の例を示す図である。
ログレベル定義テーブル1(103)は、本実施例では、図3(a)に示す情報の種類別オプション301と、同図(b)に示す情報の重要度別オプション302と、同図(c)に示すログ出力内容オプション303の定義を持つ。
【0035】
これら3つの定義はいずれか1つだけであっても本発明の目的を達することが可能である。また、情報の種類別オプションと情報の重要度別オプションの指定によって、ある関数についてログ要否の矛盾が生じたときは少なくともどちらか一方で指定された関数についてはログ情報として出力する。ログレベル定義テーブル1はアプリケーションユーザに公開されており、ここに定められた定義を組み合わせてアプリケーションユーザは所望するログ出力情報の定義を行うことができる。
【0036】
情報の種類別オプション301は、ログ情報の示す内容ごとに分類したものである。例えば、図3(a)の例では、「ログレベル1」はエラー情報を示し、「ログレベル2」は処理時間情報を示し、「ログレベル3」はネットワーク制御情報を示し、「ログレベル4」はデータベース制御情報を示し、「ログレベル5」は正常に動作したときのメッセージ情報を示している、などである。
【0037】
ユーザは自分が望むログ出力内容に応じて、これらの値を組み合わせて指定することができる。例えば、エラー情報だけを出力したい場合は「ログレベル1」を指定し、エラー情報に加えてデータベース制御情報も出力したい場合は「ログレベル1」と「ログレベル4」を指定する。また逆にデータベース制御情報を出力したくない場合は「−4」と指定してもよい。情報の種類別オプション301の例で指定値がなかった場合のデフォルトログレベル(図3を含む各図において「デフォルトレベル」とも記載)は「ログレベル1」である。
【0038】
図3(b)に示す情報の重要度別オプション302は、ログの重要度ごとに分類したものである。例えば、図3(b)の例では、「ログレベルH」は最も重要度の高いログ情報であって、システム情報のみを含む。「ログレベルM」は中程度のログ情報であって、上記「ログレベルH」の情報に付け加えてさらにアプリケーションプログラムが必要とする情報も含む。「ログレベルL」は、上記「ログレベルM」に付け加えてさらにメッセージ情報も含む。
【0039】
ユーザは自分が望むログ出力内容と処理にかかる負荷を考慮していずれかを選ぶことができる。例えば、ログ出力によって生じるコンピュータの負荷を最小限に押さえたければ「ログレベルH」を指定する。反対に多少負荷がかかってもたくさんのログを出力したければ「ログレベルL」を指定する。図3(b)の情報の重要度別オプション302の例で指定値がなかった場合のデフォルトログレベルは「ログレベルH」である。
【0040】
図3(c)に示すログ出力内容オプション303は、ログ出力する際の出力内容ごとに分類したものであり、出力フォーマットを定めるために参照される。例えば、図3(c)のログ出力内容オプション303の例ではOutput1は関数のログを出力する前と後のタイムスタンプを出力し、Output2は関数のログ出力中に発生した最大CPU負荷値を出力し、Output3は関数発行結果のメッセージを出力する、などである。指定されなかった場合のデフォルトはOutput1+Output2、すなわち、関数のログ出力前後のタイムスタンプと関数ログ出力中の最大CPU負荷値を出力する、である。
【0041】
図4および図5は、本実施例におけるログレベル定義テーブル2(104)の定義方法を示す図である。
ログレベル定義テーブル2(104)は、各ログレベルとそれに対応する関数のリストである。このログレベル定義テーブル2(104)はアプリケーションユーザに公開してもしなくてもよい。アプリケーションユーザがこれらのリストについて直接知る必要はないので、このログレベル定義テーブル2(104)をユーザから隠蔽することも可能である。
【0042】
このように、ログレベル定義テーブル2(104)をユーザから隠蔽することにより、ユーザが関数ごとの定義について詳細に知ることなく、ログレベル定義テーブル1だけを使ってログ出力情報の定義を行うことが容易となる。ログレベル定義テーブル2(104)の定義方法には2種類の方法が考えられる。それぞれを定義方法(1)、定義方法(2)として説明する。
【0043】
図4は、定義方法(1)を説明するための図であり、図5は、定義方法(2)を説明するための図である。
まず、定義方法(1)では図4(a)の401に示すように、レベル情報種類(1,2,3,4,5)とそれらに対応する処理関数リストが定義され、図4(b)の402に示すように、レベル重要度(H,M,L)とそれらに対応する処理関数リストが定義されている。
【0044】
図4(a)の401の例でレベル1の時、ログ出力される関数はerror()だけである。アプリケーションプログラムからある処理部Aでレベル1が設定されると、コンピュータはメモリにerror()を記憶し、処理Aが実行されている間はerror()を発行した時のログを出力する。同様にしてレベル重要度Hが設定されると、error()とdb.connect()の関数を発行した時のログを出力する。
【0045】
図6は、本実施例における処理部Aの処理フローチャート例(定義方法(1)の場合)を示す図である。
同図に示すように、ステップ601において処理部Aの外部からログ取得レベル要求が指定されたかを判定し、判定の結果、ログ取得レベル要求が指定されていれば(ステップ601:Y)、ステップ602において、指定されたログレベル定義テーブル2(104)を参照して該当するログ出力対象レベルの関数群を全て記憶する。
【0046】
ステップ601の判定の結果、ログ取得レベル要求が指定されていなければ(ステップ601:N)、次に、ステップ603において処理A内部に当該処理部向けデフォルトログレベルが設定されているかを判定する。判定の結果、当該処理部向けデフォルトログレベルが設定されていれば(ステップ603:Y)、ステップ602へ進み、当該処理部向けデフォルトログレベルが設定されていなければ(ステップ603:N)、ステップ604において処理209によって定められたアプリケーションプログラムにおけるデフォルトログレベルを読み込む。
【0047】
このようにログ出力対象レベルに該当する関数群を全て記憶した上で、ステップ605で処理Aの処理の中からステップを読み込み、そのステップに含まれる関数がログ出力対象であるかどうかを判定する。ステップ605での判定の結果、ログ出力対象であれば(ステップ605:Y)、ステップ606で開始ログ情報を取得し、ステップ607で関数の発行を行い、ステップ608で終了ログ情報を取得した後、ステップ605に戻って次の関数に対して同様の処理を繰り返す。
【0048】
一方、ステップ605での判定の結果、ログ出力対象でなければ(ステップ605:N)、関数を発行した後(ステップ609)、ステップ605に戻って次の関数に対して同様の処理を繰り返す。
このように、処理部Aにおいて処理される関数の数だけステップ605から608が繰り返される。
【0049】
ここで、図6のステップ606およびステップ608で取得する開始ログ情報および終了ログ情報について説明する。
図6のステップ606およびステップ608で取得する開始ログ情報および終了ログ情報は、例えば、後述する図8の文806でいえば、「Method-A: db.connect: start time 00.01.26: end time 00.03.05:maximum CPU status51%」のうちの“start time 00.01.26”および“end time 00.03.05”に相当している(他の関数に対する文も同様)。
【0050】
このように、処理Aの中のある関数(例えば db.connect)を発行する場合、db.connect がシステムに及ぼした影響、負荷を後で計算するために、db.connectの開始時間を計測し(ステップ606)、関数db.connect を発行し(ステップ607)、db.connectが終了した時間を計測し(ステップ608)、さらに db.connect 発行中の最大負荷 maximum CPUを計測して記録する。したがって、図6のステップ606〜608(後述する図9のステップ906〜908も同様)は、処理A内で行われる個々の関数分全てに対して行われる(文805〜809参照)。
【0051】
このように、定義方法(1)で定義した場合の利点は、アプリケーションプログラムであるレベルが設定された時にコンピュータがログ出力対象関数として検索すべき関数が予め該当するレベルの関数群にのみ絞られているので、対象関数を検索し判定する際のその関数群のみを検索すればよいので処理の高速化が可能であるという点である。不利な点は、最適化処理部110で最適化する際にログレベル定義テーブル2(104)の更新が次に述べる定義方法(2)の場合に比べて手間がかかる点である。
【0052】
図8は、上述した処理によって得られる図7のログ出力フォーマットに対応するログ情報(800)の出力例を示す図である。以下、図8のログ情報(800)の出力例について詳細に説明する。
【0053】
同図において、文801は、このログ出力のファイル名が“logout.txt”であることを示している。
文802は、当該アプリケーションプログラムAP(112)が利用可能なログレベルは“1”,“2”,“3”,“4”,“5”,および“L”(すなわち種類別オプションとして「1=エラー情報」、「2=処理時間情報」、「3=ネットワーク制御情報」、「4=データベース制御情報」、「5=正常メッセージ情報」、重要度別オプションとして「L=システム情報+アプリケーション情報+メッセージ情報」であり(図3(a)(b)参照)、出力オプションが“デフォルト”(1+2;すなわち「1=タイムスタンプ」と「2=CPU負荷」)であることを示している(図3(c)参照)。
【0054】
文803は、アプリケーションプログラムAP(112)のスタート時間が“00.00.00”で、その時のCPU負荷が“3%”であったことを示している。
【0055】
文804は、次に実行される処理Aのログレベルが“1”+“M”であり、出力オプションが“デフォルト”(1+2;すなわち「1=タイムスタンプ」と「2=CPU負荷」)のままであることを示している。
【0056】
文805は、処理Aの実行開始時間が“00.00.00”で、終了時間が“00.00.08”であり、そのときのCPU負荷の最大値が“3%”であることを示している。
【0057】
文806は、次の関数(db.connect)の実行開始時間が“00.01.26”で、終了時間が“00.03.05”であり、そのときのCPU負荷の最大値が“51%”であることを示している。
【0058】
同様にして、文807は、次に実行される関数(db.query)の実行開始時間が“00.38.56”で、終了時間が“02.43.22”、そのときのCPU負荷の最大値が“80%”であり、文808は、次に実行される関数(db.disconnect)の実行開始時間が“08.00.04”で、終了時間が“08.00.05”、そのときのCPU負荷の最大値が“15%”であり、文809は、処理Aの終了(exit)の開始時間が“10.29.72”で、終了時間が“10.29.73”、そのときのCPU負荷の最大値が“5%”であることを、それぞれ示している。
【0059】
次の処理Bについては、文810に示されているように、ログレベル“1”(1=エラー情報)のみで、ログ出力形式デフォルト(1+2;すなわち「1=タイムスタンプ」と「2=CPU負荷」)のままであることを示している。本例は、正常に処理が終了してエラーが発生しないため、ログ情報が何も出力されない場合を示している。
【0060】
次の処理Cについては、文811に示されているように、ログレベルが“1”+“5”(すなわち「1=エラー情報」、「5=正常メッセージ情報」;図3(a)(b)参照)で、ログ出力オプションが“1”+“2“+“3”(すなわち「1=タイムスタンプ」+「2=CPU負荷」+「3=メッセージ」;図3(c)参照)の場合である。
【0061】
文812は、処理Cの開始(start)の実行開始時間が“15.25.07”で、終了時間が“15.25.08”であり、そのときのCPU負荷の最大値が“3%”であることを示している。
【0062】
文813は、時間“16.21.00”にエラーが発生し、そのときのCPU負荷が“85%”であり、エラーコードが2178、エラー情報2199,3875,245“インバリッドオペレーション”であることを示している。
【0063】
文814は、時間“18.11.17”に、CPU負荷80%でエラーリターンしたことを示している。
文815は、アプリケーションプログラムAP(112)の終了時間が“18.36.25”、CPU負荷が“3%”、エラーコード2178で処理Cを終了したことを示している。
【0064】
次に、定義方法(2)について詳細に説明する。
定義方法(2)では、図5の501に示すように、処理関数ごとにログ取得レベルの情報別オプションと重要度別オプションが定義されている。例えば、501の例では、db.connect()の種類別オプションは4であり、重要度別オプションはHである。このリストの処理関数は検索を高速にするために予めインデックス作成されていてもよい。
【0065】
アプリケーションプログラムAP(112)から処理部Aが実行され、出力すべきログ情報の設定が行われる。処理部Aの中である関数が発行されると、この処理関数を定義テーブル501から検索し、設定された種類別オプションおよび重要度別オプションと比較して、該当するオプションがあればそのログを出力し、該当するオプションがなければ出力しない。
【0066】
図9は、本実施例における処理部Aの処理フローチャート例(定義方法(2)の場合)を示す図である。
同図に示すように、ステップ901で処理部Aの外部からログ取得レベル要求が指定されたかを判定し、判定の結果、ログ取得レベル要求が指定されていれば(ステップ901:Y)、ステップ902で処理Aの本来の目的を果たすための処理のステップに移る。
【0067】
また、ステップ901での判定の結果、ログ取得レベル要求が指定されていなければ(ステップ901:N)、ステップ903で処理A内部にデフォルトログレベルが設定されているかを判定し、判定の結果、デフォルトログレベルが設定されていれば(ステップ903:Y)、ステップ902へ進み、デフォルトログレベルが設定されていなければ(ステップ903:N)、ステップ904においてアプリケーションプログラムAP(112)でのデフォルトログレベルを読み込み、ステップ902へ移る。
【0068】
ステップ902で処理すべき次の関数が指定されると、ステップ905で指定されたログレベル定義テーブル2(104)を参照してログ出力対象レベルの関数であるかを判定する。判定の結果、ログ出力対象の関数であれば(ステップ905:Y)、ステップ906で開始ログ情報を取得し、ステップ907で関数の発行を行い、ステップ908で終了ログ情報を取得した後、ステップ902に戻る。
【0069】
ステップ905での判定の結果、ログ出力対象の関数でなければ(ステップ905:N)、ステップ909で関数の発行を行った後、ステップ902に戻る。
【0070】
ステップ902からステップ908は、処理部Aが処理する関数の数だけ繰り返される。その結果、定義方法(1)の場合と同様に図8に示すような如きログ情報が得られる。
【0071】
定義方法(2)で定義した場合の利点は、処理ごとに一覧で定義されているので、最適化処理によるオプションの差し替えが容易にできる点である。例えば、図8の文807のdb.query()が最適化処理の結果、重要度がMからLに下げられるときも、テーブルの中でdb.query()の該当部分だけを更新すればよい。不利な点は、処理リストの並び方によっては、定義方法(1)に比べて処理の検索に時間がかかる可能性が大きいという点である。
【0072】
本システムのユーザは、定義方法(1)および(2)の利点と不利な点を比較検討した上で、より望ましい定義方法を選択して定義することができる。また両方の定義方法で定義しておいて、アプリケーションユーザの目的に合わせてどちらか一方のテーブルを選択させて処理させるようにしてもよい。
【0073】
以上の手段によって本実施例ではアプリケーションプログラムごとに使用可能なログレベルを定義し、アプリケーションプログラムの処理ごとにログ取得レベルを変更してログ出力することが可能である。
【0074】
次に、出力されたログ情報(図8)を基にログ出力を最適化する処理について述べる。
図10は、本実施例における最適化処理部110の処理フローチャートを示す図である。
同図において、ステップ1001でユーザによって値Xの最適化処理オプション(X)が指定される。この場合、最適化処理オプションの値Xは、例えば、ログ出力にかかる処理時間や、ログ出力のためにかかる最大CPU負荷値などである。ステップ1001で指定された値Xを最適化するために、ステップ1002において、後述する重要度分類しきい値テーブル(図11)を参照し、その情報を記憶する。
【0075】
ステップ1003でログ情報800を参照し、ステップ1004で最適化処理オプションの値Xのトータル値を取得する。次にステップ1005でログ情報800のうち、最適化処理オプションの値Xが高いものから順に並び替えて記憶し、ステップ1006でしきい値の分類に従って、ログレベル定義テーブル2(104)の内容を更新する。
【0076】
図11は、本実施例における重要度分類しきい値テーブル(1101)の例を示す図である。図11では、重要度レベルは最適化処理オプションの値Xのトータル値に対するその関数あるいは処理の最適化処理オプションの値Xの割合によって決定されている。
【0077】
具体的には、同図において、重要度レベルHは、最適化処理オプションの値Xのトータル値に対して、その関数あるいは処理の最適化処理オプションの値Xが1%未満のものを指し、重要度レベルMは、同じく1%以上10%未満のものを指し、重要度レベルLは、同じく10%以上のものを指す場合の例を示している。
【0078】
従って、図8のログ出力情報の例では、処理時間を最適化処理オプションの値Xとした場合、処理時間のトータル値18.36.25に対して、最も高い割合を占めているMethod-Aのdb.query(スタート時刻“00.38.56”、終了時刻“02.43.22”)(文807参照)のレベル重要度がLとなり、ログレベル定義テーブル2(104)でのdb.queryのレベル重要度がMからLに更新される。つまり、レベル重要度がMからLに下げられたことになり、次回からはレベルLを要求しない限りdb.queryのログは出力されない。
【0079】
以上述べたように本実施例によれば、アプリケーションプログラムごとに取得するログレベルとフォーマットを定義し、アプリケーションプログラム内の処理ごとに取得するログレベルと出力形式を変えて出力することが可能である。また、出力されたログ情報を基に、ある値Xについて最適化処理を行い、重要度の更新を自動で行うことが可能である。
【0080】
本実施例によれば、アプリケーションユーザは所望するログ出力内容と重要度に応じてログの取得レベルを定義して、各処理ごとに使い分けることができ、詳細にログ情報を取得したい処理と、そうでない処理を、ソースコードを書き換えることなく変化させることができるという効果が得られる。また、出力されたログ情報をもとにログレベル定義テーブルを書き換えることができるので、ログ処理にかかる負担に応じて出力内容を変化させ、プログラムのソースコードを変更することなく、性能を向上させるために最適なレベルのログ取得を行うことが可能になるという効果が得られる。
【0081】
次に、本発明に係るログレベル定義方法の第二の実施例を説明する
本第二の実施例は、第一の実施例における処理部Aを別の実現形態に置き換えたものである。
【0082】
図12は、本実施例における処理部Aの実現形態を示す図である。
本実施例では、同図に示すように、アプリケーションプログラム1201は、ユーザが所望するn個の関数(関数1(1202)、関数2(1203)・・・関数n(1204))を本来の目的を達成できるように自由に組み合わせて構成する。各関数はインターフェースを通じて、本実施例のログレベル定義取得方法が提供するライブラリ群1205を呼び出す。各関数に対応したライブラリ1206〜1208はそれぞれ開始ログ情報取得部a、関数発行部b、終了ログ情報取得部cを持っている。
【0083】
このように、本発明の第二の実施例においては、アプリケーションユーザがその目的に応じて自由に関数を組み合わせてアプリケーションプログラムを構成することができるようにしたことで、ユーザ側での利便性の向上やプログラムの保守が容易になるなどの効果が得られる。
【0084】
以上説明した実施例によれば、予め取得するログのレベル定義を定めておき、ユーザが関数もしくは処理ごとに所望するログレベルの値を入力してログを取得することができるので、データベースアクセスなど詳細にログ情報を取得したい場合や、逆にデータベース検索であまりログ情報を取得したくない場合など、アプリケーションプログラムの要求に合わせて異なるレベルのログを関数ごとに定義して取得することが可能になる。
【0085】
また、ユーザが定義したログレベル定義テーブルの変更が容易であるので、プログラムのソースコードを変更することなく、取得するログレベルの変更を行うことが可能になる。
【0086】
さらに、ユーザが定義したログレベル定義テーブルを処理の高速化に向けて最適化して変更することが容易であるので、プログラムのソースコードを変更することなく、性能を向上させるために最適なレベルのログ取得を行うことが可能になる。
【0087】
なお、上述した本発明に係るログレベル定義方法を実現する各処理をプログラムコード化して、DVD,CD−ROM,FDなどのコンピュータ読み取り可能な記録媒体に記録すれば、市場に容易に流通させることができ、本発明を広く普及させることが可能になる。
【0088】
【発明の効果】
本発明のログレベル定義方法によれば、ユーザが関数もしくは処理ごとに所望するログレベルのログ情報を出力することができ、特に、ユーザが予め定義したログレベル定義情報に基づいて、アプリケーションプログラムの要求に基づいたログレベルでの出力を、プログラムのソースコードを書き換えることなく変更することが可能になる。
【0089】
また、ログレベル定義情報をプログラムの全体処理が高速化するように最適化して変更し、プログラムのソースコードを書き換えることなく、最適化されたログレベル定義情報に基づいてログ情報を出力できる。
【0090】
また、本発明の記録媒体によれば、本発明に係るログレベル定義方法を広く普及させることが容易になる。
【図面の簡単な説明】
【図1】本発明に係るログレベル定義方法の第一の実施例を説明するためのシステム構成の模式図である。
【図2】本発明に係るログレベル定義方法の第一の実施例における初期設定処理部の処理フローチャートを示す図である。
【図3】本発明に係るログレベル定義方法の第一の実施例におけるログレベル定義テーブル1の例を示す図である。
【図4】本発明に係るログレベル定義方法の第一の実施例におけるログレベル定義テーブル2の定義方法(1)を示す図である。
【図5】本発明に係るログレベル定義方法の第一の実施例におけるログレベル定義テーブル2の定義方法(2)を示す図である。
【図6】本発明に係るログレベル定義方法の第一の実施例における処理部Aの処理フローチャート例(定義方法(1)の場合)を示す図である。
【図7】本発明に係るログレベル定義方法の第一の実施例におけるログ情報出力フォーマットの例を示す図である。
【図8】本発明に係るログレベル定義方法の第一の実施例におけるログ情報の出力例を示す図である。
【図9】本発明に係るログレベル定義方法の第一の実施例における処理部Aの処理フローチャート例(定義方法(2)の場合)を示す図である。
【図10】本発明に係るログレベル定義方法の第一の実施例における最適化処理部の処理フローを示す図である。
【図11】本発明に係るログレベル定義方法の第一の実施例における最適化処理部で参照される重要度分類しきい値の例を示す図である。
【図12】本発明に係るログレベル定義方法の第二の実施例における処理部Aの実現方法を示す図である。
【符号の説明】
A:コンピュータ1、
B:コンピュータ2、
101:コンピュータ1(A)のメモリに読み込まれた本発明に係るプログラム構成、
102:初期設定処理部、
103:ログレベル定義テーブル1、
104:ログレベル定義テーブル2、
105:処理部A、
1051:ログレベル入力部、
1052:その他の処理部、
1053:ログ情報取得部、
106:処理部B、
1061:ログレベル入力部、
1062:その他の処理部、
1063:ログ情報取得部、
107:ログ出力処理部、
108:外部記憶装置、
109:入出力装置、
110:最適化処理部、
111:コンピュータ2(コンピュータ1と同一でもよい)のメモリ、
112:コンピュータ2(B)のメモリに読み込まれているアプリケーションプログラム、
301:情報の種類別オプションの定義例、
302:情報の重要度別オプションの定義例、
303:ログ出力内容オプションの定義例、
401,402,501:ログレベル定義テーブル2の定義例、
700:ログ情報出力フォーマットの例、
800:ログ情報の例、
1101:重要度分類しきい値設定テーブルの例、
1201:アプリケーションプログラム、
1202〜1204:関数1〜n、
1205:本発明の第二の実施形態におけるログレベル定義取得方法が提供するライブラリ群、
1206〜1208:ライブラリ。
Claims (5)
- プログラムのログ情報を、コンピュータによって、当該ログ情報の出力詳細度を表すログレベルに応じて取得し出力する方法であって、
前記コンピュータの処理として、
前記プログラムの関数もしくは処理ごとに少なくとも1つ以上のログレベルおよびデフォルトログレベルの組が、出力するログ情報の種類を指定する種類別オプション、出力するログ情報を重要度別に指定する重要度別オプション、出力するログ情報の内容を指定するログ出力内容オプションの少なくともいずれか1つのオプション情報として定義された情報を記憶装置に記憶するステップと、
入力手段で入力した入力情報により、前記関数もしくは処理ごとに定義した前記1つ以上のログレベルが指定された場合には該指定されたログレベルを採用して上記記憶装置に記憶した定義情報を参照し、前記種類別オプション、前記重要度別オプション、前記ログ出力内容オプションの少なくともいずれか1つのオプション情報として定義された当該ログレベルに応じたログ情報を取得して出力し、
何も指定されない場合には前記デフォルトログレベルを採用して上記記憶装置に記憶した定義情報を参照し、前記種類別オプション、前記重要度別オプション、前記ログ出力内容オプションの少なくともいずれか1つのオプション情報として定義された当該ログレベルに応じたログ情報を取得して出力するステップと
を有することを特徴とするログ情報取得出力方法。 - 請求項1記載のログ情報取得出力方法において、
前記記憶装置に記憶した前記ログレベルの定義情報では、少なくとも、どの関数もしくはどの処理がどのログレベルに当たるかが定義され、対応する前記関数もしくは処理がプログラム実行中に参照することを特徴とするログ情報取得出力方法。 - 請求項2記載のログ情報取得出力方法において、
アプリケーションプログラムが、前記各ログレベルが如何なるログ情報を取得するかを定義したログレベル定義情報を、前記関数もしくは処理に入力するステップと、
前記関数もしくは処理が、前記入力されたログレベル定義情報に基づいてログの取得の判定を行なうステップ
を有することを特徴とするログ情報取得出力方法。 - 請求項3記載のログ情報取得出力方法において、
前記ログレベル定義情報を、処理のコストまたはプログラム実行中の処理の負荷に応じて変更することを特徴とするログ情報取得出力方法。 - 前記コンピュータに、請求項1〜4のいずれか1項に記載のログ情報取得出力方法における各ステップでの処理を実行させるプログラムを記録したことを特徴とするコンピュータ読み取り可能な記録媒体。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2000358930A JP3979000B2 (ja) | 2000-11-27 | 2000-11-27 | ログ情報取得出力方法および該方法を実現するプログラムを記録した記録媒体 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2000358930A JP3979000B2 (ja) | 2000-11-27 | 2000-11-27 | ログ情報取得出力方法および該方法を実現するプログラムを記録した記録媒体 |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2002163129A JP2002163129A (ja) | 2002-06-07 |
JP3979000B2 true JP3979000B2 (ja) | 2007-09-19 |
Family
ID=18830762
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2000358930A Expired - Fee Related JP3979000B2 (ja) | 2000-11-27 | 2000-11-27 | ログ情報取得出力方法および該方法を実現するプログラムを記録した記録媒体 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP3979000B2 (ja) |
Families Citing this family (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7263632B2 (en) * | 2003-05-07 | 2007-08-28 | Microsoft Corporation | Programmatic computer problem diagnosis and resolution and automated reporting and updating of the same |
JP4859535B2 (ja) | 2006-05-30 | 2012-01-25 | 株式会社日立製作所 | 業務管理システム、情報システム及び業務管理方法 |
JP2009009464A (ja) * | 2007-06-29 | 2009-01-15 | Kyocera Mita Corp | ログ蓄積装置およびログ蓄積プログラム |
JP5176628B2 (ja) * | 2008-03-21 | 2013-04-03 | 富士通株式会社 | ログデータの取得のための制御方法および装置、並びにコンピュータプログラム |
WO2012111167A1 (ja) * | 2011-02-14 | 2012-08-23 | 株式会社日立製作所 | トレース情報取得方法、コンピュータシステム及びプログラム |
JP6075013B2 (ja) | 2012-10-31 | 2017-02-08 | 富士通株式会社 | ログ取得プログラム、ログ取得装置及びログ取得方法 |
US9311221B2 (en) * | 2013-03-15 | 2016-04-12 | Ab Initio Technology Llc | Recording program execution |
JP2018025965A (ja) * | 2016-08-10 | 2018-02-15 | 理想科学工業株式会社 | 情報管理装置 |
-
2000
- 2000-11-27 JP JP2000358930A patent/JP3979000B2/ja not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
JP2002163129A (ja) | 2002-06-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US7243346B1 (en) | Customized library management system | |
US7299450B2 (en) | Undoing changes in a software configuration management system | |
JP4972082B2 (ja) | 開発者がシステム上の周知のロケーションを容易に発見し、または拡張するための能力 | |
JP4436036B2 (ja) | 情報処理装置、トレース処理方法、プログラム及び記録媒体 | |
US20080222609A1 (en) | Automated software testing system | |
EP1589429A2 (en) | Method and system for optimizing insertion of instrumentation points in a program | |
US20050060352A1 (en) | Storing locally a file received from a remote location | |
JPH07105064A (ja) | ファイル名検出方式 | |
JP2008009809A (ja) | データベース同期処理プログラム | |
JP2000259456A (ja) | ファイルリビジョン管理システム | |
US20070234305A1 (en) | Tracing errors in software | |
JP2006031687A (ja) | 外部メタデータの処理 | |
JP3979000B2 (ja) | ログ情報取得出力方法および該方法を実現するプログラムを記録した記録媒体 | |
JP5217155B2 (ja) | ファイル圧縮自動判定方式および方法、並びに、プログラム | |
JP5106062B2 (ja) | ファイル検索方法、ファイル検索装置、検索システム、及び、ファイル検索プログラム | |
US20140108356A1 (en) | Information processing apparatus | |
WO2004051470A1 (ja) | プログラム自動変換方法およびプログラム自動変換装置 | |
US7389515B1 (en) | Application deflation system and method | |
JP4496919B2 (ja) | Web閲覧操作の記録・再生装置及びプログラム及びコンピュータ読み取り可能な記憶媒体 | |
JP2000047861A (ja) | 影響範囲検出装置および影響範囲の検出方法 | |
US7669200B2 (en) | Resizing an install image | |
JP2002005940A (ja) | 分析機器用データ管理装置 | |
JP2009026029A (ja) | トランザクション制御装置、トランザクション制御方法、トランザクション制御プログラムおよびそのプログラムを記憶した記憶媒体 | |
JP2009122985A (ja) | サブプロセス実行システム及びサブプロセス実行プログラム | |
US20240160633A1 (en) | Computer-readable recording medium storing information processing program, information processing method, and information processing device |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20061020 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20061031 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20070104 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20070403 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20070509 |
|
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: 20070605 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20070618 |
|
R150 | Certificate of patent or registration of utility model |
Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20100706 Year of fee payment: 3 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20100706 Year of fee payment: 3 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110706 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110706 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120706 Year of fee payment: 5 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130706 Year of fee payment: 6 |
|
LAPS | Cancellation because of no payment of annual fees |