(57)【特許請求の範囲】
【請求項１】
コンピュータが、
ログ情報を圧縮して出力するアプリケーションの配備前に、前記アプリケーションのソースコードにおけるログ情報に関する圧縮方法を示す所定形式の文字列を抽出する処理と、
前記所定形式の文字列に基づいて特定される圧縮方法を示す情報を、配備された前記アプリケーションから出力されるログ情報を取得可能な装置に送信する処理と、
前記ソースコードに基づくアプリケーションを配備する処理と、
を実行し、
前記装置が、
前記コンピュータから送信された前記圧縮方法を示す情報を取得する処理と、
前記ログ情報を取得した場合に、取得した前記圧縮方法を示す情報に基づいて前記ログ情報を伸張してメッセージ形式で出力する処理と、
を実行することを特徴とするログ管理方法。
【請求項２】
ログ情報を圧縮して出力するアプリケーションの配備前に、前記アプリケーションのソースコードにおけるログ情報に関する圧縮方法を示す所定形式の文字列を抽出する抽出部と、
前記所定形式の文字列に基づいて特定される圧縮方法を示す情報を、配備された前記アプリケーションから出力されるログ情報を取得可能な第二の装置に送信する送信制御部と、
前記ソースコードに基づくアプリケーションを配備する配備部と、
を有する第一の装置と、
配備された前記アプリケーションから出力されるログ情報と、前記第一の装置から送信された前記圧縮方法を示す情報とを取得する取得部と、
前記ログ情報を取得した場合に、取得した前記圧縮方法を示す情報に基づいて前記ログ情報を伸張してメッセージ形式で出力するように出力部による出力を制御する出力制御部と、
を有する前記第二の装置と、
を有することを特徴とするログ管理システム。
【請求項３】
ログ情報を圧縮して出力するアプリケーションの配備前に、前記アプリケーションのソースコードにおけるログ情報に関する圧縮方法を示す所定形式の文字列を抽出する抽出部と、
前記所定形式の文字列に基づいて特定される圧縮方法を示す情報を、配備された前記アプリケーションから出力されるログ情報を取得可能な装置に送信する送信制御部と、
前記ソースコードに基づくアプリケーションを配備する配備部と、
を有することを特徴とする情報処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ログ管理方法およびログ管理システムおよび情報処理装置に関する。
【背景技術】
【０００２】
従来、アプリケーションを実行中に、アプリケーションの実行結果などのログ情報をログファイルに書き込むサーバなどの装置がある。かかる装置は、アプリケーションによって、ログ情報をメモリに格納する処理を実行し、メモリに格納されたログ情報を読み取ってログファイルに書き込む処理を実行する。ここで、ログ情報をメモリに格納する処理が実行されるタイミングと、メモリに格納されたログ情報をログファイルに書き込む処理が実行されるタイミングとは、互いに非同期である。これにより、ログ情報をログファイルに書き込む処理の処理結果に関わらず、ログ情報をメモリに格納する処理を実行することができる。このため、ログ情報をメモリに格納する処理、および、メモリに格納されたログ情報を読み取ってログファイルに書き込む処理などのアプリケーションが実行する、ログを出力する一連の処理の迅速化が図られる。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開平７−２７１６４８号公報
【特許文献２】特開２０１０−４４７４７号公報
【特許文献３】特開２００８−１５８７０号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
しかしながら、上記の従来技術では、依然として、ログを出力する処理が遅延する場合があるという問題がある。
【０００５】
たとえば、アプリケーションを実行する上述の装置に、アプリケーションを実行させて処理結果を取得するクライアント端末の数が増加する場合には、かかる装置では、ログ情報をメモリに格納する処理を実行する回数が増加する。そのため、このような場合には、かかる装置では、メモリに記憶されたログ情報のサイズが大きくなり、ログ情報をメモリに格納する処理の速度が低下するような事象が発生することがある。
【０００６】
また、メモリに多くのログ情報が記憶されるため、メモリに格納されたログ情報をログファイルに書き込む処理では、ログファイルへのアクセスが多くなり、ログファイルが記憶されたサーバなどの装置へのアクセス回数が多くなる。そのため、ログ情報をログファイルに書き込む装置では、ログ情報をログファイルに書き込む際に遅延が発生し、この遅延に伴って、メモリからログ情報を読み取る処理についても遅延が発生する場合がある。
【０００７】
そこで、ログを出力する処理の迅速化という目的を達成するために、下記の様々な方法が考えられる。例えば、アプリケーションを実行する上述の装置が、ログ情報をログファイルに書き込む処理を実行する際に、ログ情報を圧縮し、圧縮したログ情報を、ログファイルが記憶された装置へ送信することで、ログ情報をログファイルに書き込む方法が考えられる。しかしながら、この場合には、かかる装置では、ログ情報をログファイルに書き込む処理を実行する際に、ログ情報を圧縮する処理を実行するため、処理の遅延が発生する。そのため、かかる方法では、ログを出力する処理の迅速化を図ることができない。
【０００８】
また、アプリケーションを実行する上述の装置が、ログ情報をメモリに格納する処理を実行する際に、ログ情報を圧縮してメモリに格納し、メモリに格納されたログ情報を読み取り、伸張してログファイルに書き込む処理を実行する方法も考えられる。しかしながら、この場合には、かかる装置では、ログ情報をログファイルに書き込む処理を実行する際に、ログ情報を圧縮する処理を実行するため、処理の遅延が発生する。そのため、かかる方法においても、ログを出力する処理の迅速化を図ることができない。
【０００９】
また、アプリケーションを実行する上述の装置が、ログ情報をメモリに格納する処理を実行する際に、ログ情報を圧縮してメモリに格納し、次のような処理を行う方法も考えられる。すなわち、装置が、メモリに格納されたログ情報を伸張し、ログ情報の出力先を判別し、ログ情報を再び圧縮して、出力先のログファイルに書き込む処理を実行する。しかしながら、この場合には、かかる装置では、ログ情報を圧縮し、伸張し、圧縮するという煩雑な処理を行うため、処理の遅延が発生する。そのため、かかる方法においても、ログを出力する処理の迅速化を図ることができない。
【００１０】
また、アプリケーションを実行する上述の装置が、ログ情報をメモリに格納する処理を実行する際に、辞書を用いてログ情報を圧縮して辞書とともにメモリに格納し、次のような処理を行う方法も考えられる。すなわち、装置が、メモリに格納され圧縮されたログ情報および辞書を取得し、取得したログ情報および辞書をログファイルに書き込む処理を実行する。しかしながら、辞書のデータサイズが大きいため、この場合においても、メモリに記憶されたデータのサイズが大きくなり、ログ情報をメモリに格納する処理の速度が低下するような事象が発生することがある。また、ログ情報および辞書のサイズが大きいため、ログ情報をログファイルに書き込む場合には、ログ情報をログファイルに書き込む際に遅延が発生し、この遅延に伴って、メモリからログ情報を読み取る処理についても遅延が発生する場合がある。そのため、かかる方法においても、ログを出力する処理の迅速化を図ることができない。
【００１１】
１つの側面では、本発明は、ログを出力する処理の遅延を抑制することができるログ管理方法、ログ管理システムおよび情報処理装置を提供することを目的とする。
【課題を解決するための手段】
【００１２】
本願の開示するログ管理方法は、一つの態様において、コンピュータが、ログ情報を圧縮して出力するアプリケーションの配備前に、前記アプリケーションのソースコードからログ情報に関するメッセージ形式の定義情報を抽出する処理を実行する。コンピュータが、前記ソースコードに基づくアプリケーションを配備する処理を実行する。また、配備された前記アプリケーションから出力されるログ情報を取得可能な装置が、前記ログ情報を取得した場合に、前記定義情報に基づいて前記ログ情報をメッセージ形式で出力する処理を実行する。
【発明の効果】
【００１３】
１態様によれば、ログを出力する処理の遅延を抑制することができる。
【図面の簡単な説明】
【００１４】
【図１】図１は、実施例に係るログ管理システムのシステム構成の一例を示す図である。
【図２】図２は、辞書登録関数の一例を示す図である。
【図３】図３は、辞書のデータ構造の一例を示す図である。
【図４】図４は、固定文字辞書のデータ構造の一例を示す図である。
【図５】図５は、ログファイルのデータ構造の一例を示す図である。
【図６】図６は、実施例に係る生成処理の手順を示すフローチャートである。
【図７】図７は、実施例に係る実行処理の手順を示すフローチャートである。
【図８】図８は、実施例に係るアプリケーションが実行する、第一のログ出力関数を呼び出して、パラメタを制御部の内部メモリに格納する処理の手順を示すフローチャートである。
【図９】図９は、実施例に係るアプリケーションが実行する、第二のログ出力関数を呼び出して、内部メモリに格納されたパラメタを読み取ってクライアント端末へ送信するように制御する処理の手順を示すフローチャートである。
【図１０】図１０は、実施例に係る表示制御処理の手順を示すフローチャートである。
【図１１】図１１は、実施例に係る伸張部が実行する、ログ伸張関数を呼び出して、ログ情報を伸張する処理の手順を示すフローチャートである。
【図１２】図１２は、抽出プログラムを実行するコンピュータを示す図である。
【図１３】図１３は、伸張プログラムを実行するコンピュータを示す図である。
【発明を実施するための形態】
【００１５】
以下に、本願の開示するログ管理方法、ログ管理システムおよび情報処理装置の実施例を図面に基づいて詳細に説明する。なお、この実施例は開示の技術を限定するものではない。
【実施例】
【００１６】
実施例に係るログ管理システムについて説明する。図１は、実施例に係るログ管理システムのシステム構成の一例を示す図である。図１に示すように、ログ管理システム１は、サーバ１０と、クライアント端末２０とを有する。サーバ１０とクライアント端末２０とは、ネットワーク３０を介して接続されている。
【００１７】
［サーバの構成］
図１に示すように、サーバ１０は、入力部１１と、表示部１２と、通信部１３と、記憶部１４と、制御部１５とを有するコンピュータである。
【００１８】
入力部１１は、制御部１５に情報を入力する。例えば、入力部１１は、ユーザからの指示を受け付けて、制御部１５に、各種の処理を実行する指示を入力する。入力部１１のデバイスの一例としては、キーボードやマウスなどが挙げられる。
【００１９】
表示部１２は、制御部１５の制御により、各種の画像を表示する。
【００２０】
通信部１３は、サーバ１０とクライアント端末２０との通信を行う。例えば、通信部１３は、後述の実行部１５ｃにより実行されたアプリケーションにおいて圧縮されたログ情報を受信すると、受信したログ情報を、ネットワーク３０を介してクライアント端末２０へ送信する。また、通信部１３は、後述の送信制御部１５ｄから送信された後述の辞書１４ｂを受信すると、受信した辞書１４ｂを、ネットワーク３０を介してクライアント端末２０へ送信する。
【００２１】
記憶部１４は、制御部１５で実行される各種プログラムを記憶する。また、記憶部１４は、ソースコード１４ａを記憶する。また、記憶部１４には、後述の抽出部１５ａによって生成された辞書１４ｂが格納される。また、記憶部１４には、後述の配備部１５ｂによって生成されたアプリケーション１４ｃが格納される。また、記憶部１４は、固定文字辞書１４ｄを記憶する。
【００２２】
ソースコード１４ａは、アプリケーションのソースコードである。かかるソースコードは、アプリケーションを開発する開発者などによって記述される。ソースコード１４ａは、各種の処理を規定するコードを含む。例えば、ソースコード１４ａは、後述のパラメタを制御部１５の内部メモリに格納する処理を規定するコードを含む。また、ソースコード１４ａは、内部メモリに格納されたパラメタを読み取ってクライアント端末２０へ送信するように制御する処理を規定する。ここで、パラメタは圧縮されたログ情報である。また、パラメタを内部メモリに格納する処理が実行されるタイミングと、内部メモリに格納されたパラメタをクライアント端末２０へ送信する処理が実行されるタイミングとは、互いに非同期である。これにより、パラメタをクライアント端末２０へ送信する処理の処理結果に関わらず、パラメタを内部メモリに格納する処理を実行することができる。このため、パラメタを内部メモリに格納する処理、および、内部メモリに格納されたパラメタを読み取ってクライアント端末２０へ送信する処理などのアプリケーションが実行する、圧縮されたログであるパラメタを出力する一連の処理の迅速化が図られる。
【００２３】
ソースコード１４ａに含まれる他のコードの一例について説明する。例えば、ソースコード１４ａには、辞書登録関数が含まれる。辞書登録関数は、開発者などによって記述される。辞書登録関数の形式の一例としては、「辞書登録関数（ログＩＤ，”フォーマット文字列”）」のような形式が挙げられる。ここで、フォーマット文字列は、ログＩＤが示すログのフォーマットの文字列である。
【００２４】
フォーマット文字列は、ログのフォーマットの文字列においてパラメタが埋め込まれる位置、および、パラメタの圧縮方法を示す特殊文字を含む。なお、以下の説明では、ログのフォーマットの文字列のうち、特殊文字以外の文字列を固定文字列と称する場合がある。特殊文字は、パラメタの圧縮方法を特定する文字列「Ｘ」を記号「＜＠」と、記号「＞」とで挟んだ「＜＠Ｘ＞」で表される。例えば、フォーマット文字列が「ＡＢ＜＠Ｘ＞ＣＤ」である場合には、フォーマット文字列「ＡＢ＜＠Ｘ＞ＣＤ」は、固定文字列「ＡＢ」と、固定文字列「ＣＤ」との間に、「Ｘ」が示す圧縮方法で圧縮されたパラメタが埋め込まれることを示す。
【００２５】
図２は、辞書登録関数の一例を示す図である。図２の例は、ソースコード１４ａに、辞書登録関数（００１，”＜＠ＴＩＭＥ＞：＜＠ＩＤ＞の実行に成功しました”）、および  辞書登録関数（００２，”＜＠ＴＩＭＥ＞：＜＠ＩＤ＞の実行に失敗しました”）が含まれている場合を示す。
【００２６】
ここで、文字列「ＴＩＭＥ」は、ソースコード１４ａ上で１つ前に位置する特殊文字＜＠ＴＩＭＥ＞の位置に埋め込まれた時刻との差分をパラメタとすることにより、時刻を示すパラメタを圧縮する圧縮方法を示す。例えば、１つ前に位置する特殊文字＜＠ＴＩＭＥ＞の位置に埋め込まれた時刻が、「２０１２年１月３０日１２時１１分２０秒」である場合に、時刻を示す圧縮対象のパラメタが「２０１２年１月３０日１２時１１分５０秒」を表すときには、時刻を示すパラメタは次のような値となる。すなわち、差分の「３０」秒が時刻を示すパラメタとなる。このように、差分の値を時刻を示すパラメタとして用いることで、時刻を示すパラメタのサイズを圧縮することができる。
【００２７】
また、文字列「ＩＤ」は、文字列そのものではなく、後述する固定文字辞書１４ｄに登録された、文字列に対応するＩＤをパラメタとすることにより、文字列を圧縮する圧縮方法を示す。例えば、文字列「ＭＳＧ−ＩＤ−０００１」のＩＤが「Ｅ１」である場合に、文字列を示す圧縮対象のパラメタが文字列「ＭＳＧ−ＩＤ−０００１」を表すときには、ＩＤ「Ｅ１」を文字列を示すパラメタとする。このように、ＩＤを文字列を示すパラメタとして用いることで、文字列を示すパラメタのサイズを圧縮することができる。
【００２８】
なお、パラメタの圧縮方法を特定する文字列の種類は、上記以外にも存在する。例えば、文字列「連番」は、ソースコード１４ａ上で１つ前に位置する特殊文字＜＠連番＞の位置に埋め込まれた数値との差分をパラメタとすることにより、数値を示すパラメタを圧縮する圧縮方法を示す。例えば、１つ前に位置する特殊文字＜＠連番＞の位置に埋め込まれた数値が、「５０」である場合に、数値を示す圧縮対象のパラメタが「５５」を表すときには、数値を示すパラメタは次のような値となる。すなわち、差分の「５」が数値を示すパラメタとなる。このように、差分の値を数値を示すパラメタとして用いることで、数値を示すパラメタのサイズを圧縮することができる。
【００２９】
辞書１４ｂについて説明する。図３は、辞書のデータ構造の一例を示す図である。図３の例が示す辞書１４ｂは、後述のアプリケーション１４ｃごとに生成される。図３の例では、辞書１４ｂは、辞書を識別するためのＩＤ（Identification）である辞書ＩＤが後述の抽出部１５ａにより登録される「辞書ＩＤ」の項目を有する。また、図３の例では、辞書１４ｂは、「ログＩＤ」、「圧縮フォーマット」、「伸張フォーマット」の各項目を有する。「ログＩＤ」の項目には、ログのＩＤであるログＩＤが抽出部１５ａにより登録される。「圧縮フォーマット」の項目には、抽出部１５ａにより、辞書登録関数のフォーマット文字列から抽出された特殊文字中のパラメタの圧縮方法を特定する文字列が登録される。「伸張フォーマット」の項目には、抽出部１５ａにより、辞書登録関数のフォーマット文字列が登録される。辞書１４ｂは、実行部１５ｃにより実行されたアプリケーションにおいてログ情報を圧縮する場合に用いられる。
【００３０】
アプリケーション１４ｃは、後述の配備部１５ｂによりソースコード１４ａがコンパイルされて生成される。アプリケーション１４ｃは、後述の実行部１５ｃにより実行される。実行部１５ｃにより実行されたアプリケーション１４ｃは、パラメタを制御部１５の内部メモリに格納する処理を行う。また、アプリケーション１４ｃは、内部メモリに格納されたパラメタを読み取ってクライアント端末２０へ送信するように制御する処理を行う。上述したように、パラメタを内部メモリに格納する処理が実行されるタイミングと、内部メモリに格納されたパラメタをクライアント端末２０へ送信する処理が実行されるタイミングとは、互いに非同期である。これにより、パラメタをクライアント端末２０へ送信する処理の処理結果に関わらず、パラメタを内部メモリに格納する処理を実行することができる。このため、パラメタを内部メモリに格納する処理、および、内部メモリに格納されたパラメタを読み取ってクライアント端末２０へ送信する処理などの圧縮されたログであるパラメタを出力する一連の処理を迅速に行うことができる。
【００３１】
固定文字辞書１４ｄは、文字列と、文字列よりデータサイズが小さいＩＤとを対応付けて記憶する。図４は、固定文字辞書のデータ構造の一例を示す図である。図４の例が示す固定文字辞書１４ｄには、文字列「ＭＳＧ−ＩＤ−０００１」と、ＩＤ「Ｅ１」とが対応付けて登録された場合が示されている。また、図４の例が示す固定文字辞書１４ｄには、文字列「ＭＳＧ−ＩＤ−０００２」と、ＩＤ「Ｅ２」とが対応付けて登録された場合が示されている。
【００３２】
記憶部１４は、例えば、フラッシュメモリなどの半導体メモリ素子、または、ハードディスク、光ディスクなどの記憶装置である。なお、記憶部１４は、上記の種類の記憶装置に限定されるものではなく、ＲＡＭ（Random  Access  Memory)、ＲＯＭ（Read  Only  Memory)であってもよい。
【００３３】
制御部１５は、各種の処理手順を規定したプログラムや制御データを格納するための内部メモリを有し、これらによって種々の処理を実行する。制御部１５は、抽出部１５ａと、配備部１５ｂと、実行部１５ｃと、送信制御部１５ｄとを有する。
【００３４】
抽出部１５ａは、アプリケーション１４ｃの配備前に、アプリケーション１４ｃのソースコード１４ａからログ情報に関するメッセージ形式の定義情報を抽出する。例えば、抽出部１５ａは、まず、新たな辞書ＩＤを生成し、生成した辞書ＩＤが「辞書ＩＤ」の項目に登録された辞書１４ｂを生成する。そして、抽出部１５ａは、ソースコード１４ｂを読み込む。続いて、抽出部１５ａは、まだ、辞書登録関数を検索していない場合には、読み込んだソースコード１４ｂの中から１つ目の辞書登録関数を検索し、辞書登録関数を検索したことがある場合には、ソースコード１４ｂの中から次の辞書登録関数を検索する。
【００３５】
検索の結果、辞書登録関数が得られた場合には、抽出部１５ａは、得られた辞書登録関数のフォーマット文字列から特殊文字を抽出する。そして、抽出部１５ａは、抽出した特殊文字中のパラメタの圧縮方法を特定する文字列を、区切り文字「，」で並べた文字列を「圧縮フォーマット」に登録する文字列として生成する。その後、抽出部１５ａは、得られた辞書登録関数のログＩＤ、生成した文字列、得られた辞書登録関数のフォーマット文字列の組を辞書１４ｂに登録する。抽出部１５ａは、上述した、辞書登録関数のログＩＤ、生成した文字列、辞書登録関数のフォーマット文字列の組を辞書１４ｂに登録する処理を、検索の結果、辞書登録関数が得られなくなるまで繰り返し行う。これにより、先の図３に示すような辞書１４ｂが生成される。
【００３６】
配備部１５ｂは、ソースコード１４ａに基づくアプリケーション１４ｃを配備する。例えば、配備部１５ｂは、まず、ソースコード１４ａをコンパイルしてアプリケーション１４ｃを生成する。そして、配備部１５ｂは、生成されたアプリケーション１４ｃを記憶部１４に格納する。
【００３７】
実行部１５ｃは、入力部１１からアプリケーション１４ｃを実行する指示を受信した場合に、アプリケーション１４ｃに対応する辞書１４ｂを読み込んで、アプリケーション１４ｃを実行する。実行部１５ｃによりアプリケーション１４ｃが実行されている場合に、圧縮されたログ情報であるパラメタを内部メモリに格納するタイミングで、アプリケーション１４ｃは、次のような処理を行う。すなわち、アプリケーション１４ｃは、第一のログ出力関数を呼び出して、パラメタを制御部１５の内部メモリに格納する処理を行う。これに加えて、実行部１５ｃによりアプリケーション１４ｃが実行されている場合に、内部メモリに格納されたログをクライアント端末２０へ送信するタイミングで、アプリケーション１４ｃは、次のような処理を行う。すなわち、アプリケーション１４ｃは、第二のログ出力関数を呼び出して、内部メモリに格納されたパラメタを読み取ってクライアント端末２０へ送信するように制御する処理を行う。
【００３８】
アプリケーション１４ｃにより実行される、第一のログ出力関数を呼び出して、パラメタを制御部１５の内部メモリに格納する処理について説明する。例えば、アプリケーション１４ｃは、まず、アプリケーション１４ｃに対応する辞書ＩＤ、内部メモリに格納するパラメタ、かかるパラメタに対応する特殊文字を含むフォーマット文字列に対応するログＩＤを引数として、第一のログ出力関数にわたす。これに加えて、アプリケーション１４ｃは、パラメタが書き込まれるログファイルのＩＤを示すログ出力先を引数として、第一のログ出力関数にわたす。例えば、アプリケーション１４ｃは、引数として、「２０１２年１月３０日１２時１１分５０秒」、「ＭＳＧ−ＩＤ−０００１」の２つのパラメタを第一のログ出力関数にわたす。この場合、アプリケーション１４ｃは、例えば、２つのパラメタのそれぞれに対応する特殊文字＜＠ＴＩＭＥ＞、＜＠ＩＤ＞を含むフォーマット文字列「＜＠ＴＩＭＥ＞：＜＠ＩＤ＞の実行に成功しました」に対応するログＩＤ「００１」を引数としてわたす。
【００３９】
そして、第一のログ出力関数を呼び出したアプリケーション１４ｃは、クライアント端末２０へ、ログ出力先が示すログファイルを記憶しているか否かを応答する指示を送信する。ここで、かかる指示を受信したクライアント端末２０は、ログ出力先が示すログファイルを記憶している場合には、ログ出力先が示すログファイルを記憶していることを示す情報をサーバ１０へ送信して、応答する。一方、ログ出力先が示すログファイルを記憶していない場合には、クライアント端末２０は、ログ出力先が示すログファイルを記憶していないことを示す情報をサーバ１０へ送信して、応答する。
【００４０】
応答を受信した場合には、アプリケーション１４ｃは、受信した応答が、ログファイルを記憶していることを示すか否かを判定する。ログファイルを記憶していることを示す場合には、アプリケーション１４ｃは、クライアント端末２０へ、ログ出力先が示すログファイルの「辞書ＩＤ」の項目に登録された辞書ＩＤを送信する旨の指示を送信する。ここで、ここで、かかる指示を受信したクライアント端末２０は、ログ出力先が示す後述のログファイル２４ａの「辞書ＩＤ」の項目に登録された辞書ＩＤをサーバ１０へ送信する。
【００４１】
そして、アプリケーション１４ｃは、辞書ＩＤを受信した場合には、受信した辞書ＩＤと、引数として第一のログ出力関数にわたされた辞書ＩＤとが一致するか否かを判定する。一致しない場合には、アプリケーション１４ｃは、エラー通知を表示するように、表示部１２の表示を制御する。
【００４２】
一方、一致する場合には、アプリケーション１４ｃは、第一のログ出力関数にわたされた辞書ＩＤが示す辞書１４ｂを参照する。そして、アプリケーション１４ｃは、第一のログ出力関数にわたされたログＩＤが「ログＩＤ」の項目に登録されたレコードの「圧縮フォーマット」の項目に登録された文字列から、特殊文字中のパラメタの圧縮方法を特定し、パラメタを圧縮する。
【００４３】
例えば、アプリケーション１４ｃは、「圧縮フォーマット」の項目に登録された文字列が「ＴＩＭＥ」である場合には、次のような処理を行う。すなわち、アプリケーション１４ｃは、かかる「ＴＩＭＥ」に対応する特殊文字＜＠ＴＩＭＥ＞の位置より１つ前に位置する特殊文字＜＠ＴＩＭＥ＞の位置に埋め込まれた時刻との差分の値を算出する。具体例を挙げて説明する。例えば、１つ前に位置する特殊文字＜＠ＴＩＭＥ＞の位置に埋め込まれた時刻が「２０１２年１月３０日１２時１１分２０秒」である場合に、パラメタが「２０１２年１月３０日１２時１１分５０秒」であるときには、アプリケーション１４ｃは次の処理を行う。すなわち、アプリケーション１４ｃは、差分の「３０」秒を時刻を示すパラメタとして算出する。このように、差分の値を時刻を示すパラメタとして用いることで、時刻を示すパラメタのサイズを圧縮することができる。
【００４４】
また、アプリケーション１４ｃは、「圧縮フォーマット」の項目に登録された文字列が「ＩＤ」である場合には、次のような処理を行う。すなわち、アプリケーション１４ｃは、文字列のパラメタに対応する「ＩＤ」を固定文字辞書１４ｄから取得し、取得した「ＩＤ」を新たなパラメタとすることにより、文字列を圧縮する。例えば、文字列「ＭＳＧ−ＩＤ−０００１」とＩＤ「Ｅ１」とが固定文字辞書１４ｄに登録されている場合に、第一のログ出力関数にわたされたパラメタが、文字列「ＭＳＧ−ＩＤ−０００１」である場合には、アプリケーション１４ｃは、次の処理を行う。すなわち、アプリケーション１４ｃは、ＩＤ「Ｅ１」を文字列を示すパラメタとする。このように、ＩＤを文字列を示すパラメタとして用いることで、文字列を示すパラメタのサイズを圧縮することができる。
【００４５】
また、アプリケーション１４ｃは、「圧縮フォーマット」の項目に登録された文字列が「連番」である場合には、次のような処理を行う。すなわち、アプリケーション１４ｃは、かかる「連番」に対応する特殊文字＜＠連番＞の位置より１つ前に位置する特殊文字＜＠連番＞の位置に埋め込まれた数値との差分の値を算出する。具体例を挙げて説明する。例えば、１つ前に位置する特殊文字＜＠連番＞の位置に埋め込まれた数値が「５０」である場合に、第一のログ出力関数にわたされたパラメタが「５５」であるときには、アプリケーション１４ｃは次の処理を行う。すなわち、アプリケーション１４ｃは、差分の「５」を数値を示すパラメタとして算出する。このように、差分の値を数値を示すパラメタとして用いることで、数値を示すパラメタのサイズを圧縮することができる。
【００４６】
そして、アプリケーション１４ｃは、第一のログ出力関数に引数としてわたされたログＩＤ、辞書ＩＤおよびログ出力先、ならびに、圧縮されたパラメタを対応付けて制御部１５の内部メモリに格納する。
【００４７】
次に、アプリケーション１４ｃにより実行される、第二のログ出力関数を呼び出して、内部メモリに格納されたパラメタを読み取ってクライアント端末２０へ送信するように制御する処理について説明する。例えば、アプリケーション１４ｃは、まず、送信するパラメタを含むログ情報のログＩＤを引数として、第二のログ出力関数にわたす。そして、第二のログ出力関数を呼び出したアプリケーション１４ｃは、第二のログ出力関数に引数としてわたされたログＩＤと同一のログＩＤに対応付けられた辞書ＩＤおよびログ出力先、ならびに、圧縮されたパラメタを内部メモリから取得する。続いて、アプリケーション１４ｃは、取得した辞書ＩＤ、圧縮されたパラメタ、第二のログ出力関数に引数としてわたされたログＩＤを、取得したログ出力先が示すログファイル２４ａを記憶部２４に記憶するクライアント端末２０へ送信するように制御する。例えば、アプリケーション１４ｃは、取得した辞書ＩＤ、圧縮されたパラメタ、第二のログ出力関数に引数としてわたされたログＩＤを、クライアント端末２０へ送信する指示とともに、通信部１３に送信する。これにより、通信部１３は、取得した辞書ＩＤ、圧縮されたパラメタ、第二のログ出力関数に引数としてわたされたログＩＤを、クライアント端末２０へ送信する。
【００４８】
送信制御部１５ｄは、抽出部１５ａにより辞書１４ｂが生成されるたびに、クライアント端末２０に辞書１４ｂを送信する指示とともに、辞書１４ｂを通信部１３へ送信する。これにより、通信部１３は、クライアント端末２０に辞書１４ｂを送信する。
【００４９】
制御部１５は、ＡＳＩＣ（Application  Specific  Integrated  Circuit）やＦＰＧＡ（Field  Programmable  Gate  Array）などの集積回路またはＣＰＵ（Central  Processing  Unit）やＭＰＵ（Micro  Processing  Unit）などの電子回路である。  
【００５０】
［クライアント端末の構成］
図１に示すように、クライアント端末２０は、入力部２１と、表示部２２と、通信部２３と、記憶部２４と、制御部２５とを有する。
【００５１】
入力部２１は、制御部２５に情報を入力する。例えば、入力部２１は、ユーザからの指示を受け付けて、制御部２５に、各種の処理を実行する指示を入力する。入力部２１のデバイスの一例としては、キーボードやマウスなどが挙げられる。
【００５２】
表示部２２は、各種の画像を表示する。例えば、表示部２２は、後述の表示制御部２５ｃの制御により、伸張されたログ情報を表示する。
【００５３】
通信部２３は、クライアント端末２０とサーバ１０との通信を行う。例えば、通信部２３は、サーバ１０から辞書ＩＤ、圧縮されたパラメタ、ログＩＤを受信すると、受信した辞書ＩＤ、圧縮されたパラメタ、ログＩＤを、制御部２５へ送信する。また、通信部２３は、サーバ１０から辞書１４ｂを受信すると、受信した辞書１４ｂを制御部２５へ送信する。
【００５４】
記憶部２４は、制御部２５で実行される各種プログラムを記憶する。また、記憶部２４には、後述の取得部２５ａによって生成されたログファイル２４ａが格納される。また、記憶部２４には、サーバ１０から送信された辞書１４ｂが取得部２５ａによって格納される。また、記憶部２４は、サーバ１０の記憶部１４に記憶された固定文字辞書１４ｄと同一の固定文字辞書１４ｄを記憶する。
【００５５】
ログファイル２４ａは、サーバ１０から送信された辞書ＩＤ、圧縮されたパラメタ、および、ログＩＤが対応付けて登録されるファイルである。図５は、ログファイルのデータ構造の一例を示す図である。図５の例では、ログファイル２４ａは、辞書ＩＤが取得部２５ａにより登録される「辞書ＩＤ」の項目を有する。また、図５の例では、ログファイル２４ａは、「ログＩＤ」、「パラメタ」の各項目を有する。「ログＩＤ」の項目には、ログＩＤが取得部２５ａにより登録される。「パラメタ」の項目には、圧縮されたパラメタが取得部２５ａにより登録される。
【００５６】
記憶部２４は、例えば、フラッシュメモリなどの半導体メモリ素子、または、ハードディスク、光ディスクなどの記憶装置である。なお、記憶部２４は、上記の種類の記憶装置に限定されるものではなく、ＲＡＭ（Random  Access  Memory)、ＲＯＭ（Read  Only  Memory)であってもよい。
【００５７】
制御部２５は、各種の処理手順を規定したプログラムや制御データを格納するための内部メモリを有し、これらによって種々の処理を実行する。制御部２５は、取得部２５ａと、伸張部２５ｂと、表示制御部２５ｃとを有する。
【００５８】
取得部２５ａは、各種の情報を取得する。例えば、取得部２５ａは、通信部２３から送信された辞書１４ｂを取得し、取得した辞書１４ｂを記憶部２４へ格納する。
【００５９】
また、取得部２５ａは、通信部２３から送信された辞書ＩＤ、圧縮されたパラメタ、ログＩＤを取得すると、次のような処理を行う。まず、取得部２５ａは、取得した辞書ＩＤが「辞書ＩＤ」の項目に登録されたログファイル２４ａがあるか記憶部２４を検索する。検索の結果、ログファイル２４ａが得られなかった場合には、取得部２５ａは、取得した辞書ＩＤが「辞書ＩＤ」の項目に登録されたログファイル２４ａを生成し、生成したログファイル２４ａを記憶部２４へ格納する。続いて、取得部２５ａは、取得した圧縮されたパラメタを、生成したログファイル２４ａの「パラメタ」の項目に登録する。また、取得部２５ａは、取得したログＩＤを生成したログファイル２４ａの「ログＩＤ」の項目に登録する。
【００６０】
一方、検索の結果、ログファイル２４ａが得られた場合には、取得部２５ａは、ログファイル２４ａに新たなレコードを追加して、取得した圧縮されたパラメタを、「パラメタ」の項目に登録する。また、取得部２５ａは、取得したログＩＤを「ログＩＤ」の項目に登録する。
【００６１】
伸張部２５ｂは、各種の情報を伸張する。例えば、伸張部２５ｂは、ユーザから指定されたログファイルのＩＤ、および、ユーザから指定されたログＩＤを受信すると、次のような処理を行う。すなわち、伸張部２５ｂは、指定されたログファイルのＩＤが示すログファイル２４ａを取得し、取得したログファイル２４ａの「辞書ＩＤ」の項目に登録された辞書ＩＤを取得する。そして、伸張部２５ｂは、取得した辞書ＩＤが示す辞書１４ｂを読み込む。続いて、伸張部２５ｂは、ログ伸張関数を呼び出して、ログ情報を伸張する処理を実行する。
【００６２】
伸張部２５ｂによって実行される、ログ伸張関数を呼び出して、ログ情報を伸張する処理について説明する。伸張部２５ｂは、ユーザから指定されたログファイルのＩＤ、および、ユーザから指定されたログＩＤを引数として、ログ伸張関数にわたす。続いて、ログ伸張関数を呼び出した伸張部２５ｂは、読み込んだ辞書１４ｂのレコードのうち、「ログＩＤ」の項目に、引数としてわたされたログＩＤが登録されたレコードを特定する。そして、伸張部２５ｂは、特定したレコードの「伸張フォーマット」の項目に登録されたフォーマット文字列を特定する。
【００６３】
例えば、先の図３の例に示す辞書１４ｂの１番目のレコードを伸張部２５ｂが特定した場合には、伸張部２５ｂは、フォーマット文字列「＜＠ＴＩＭＥ＞：＜＠ＩＤ＞の実行に成功しました」を特定する。また、先の図３の例に示す辞書１４ｂの２番目のレコードを伸張部２５ｂが特定した場合には、伸張部２５ｂは、フォーマット文字列「＜＠ＴＩＭＥ＞：＜＠ＩＤ＞の実行に失敗しました」を特定する。
【００６４】
続いて、伸張部２５ｂは、特定したフォーマット文字列に含まれる特殊文字に対応するパラメタの種類に応じて、引数としてわたされたログＩＤが示すログ情報を伸張する。
【００６５】
例えば、伸張部２５ｂは、特定したフォーマット文字列の特殊文字に含まれる文字列が「ＴＩＭＥ」である場合には、次のような処理を行う。伸張部２５ｂは、まず、引数としてわたされたログファイルのＩＤが示すログファイル２４ａのレコードのうち、「ログＩＤ」の項目に、引数としてわたされたログＩＤが登録されたレコードを特定する。そして、伸張部２５ｂは、特定したレコードの「パラメタ」の項目に登録された、圧縮されたパラメタを取得する。
【００６６】
そして、伸張部２５ｂは、取得したパラメータが示す値に、特定したフォーマット文字列に含まれる特殊文字＜＠ＴＩＭＥ＞の位置より１つ前に位置する特殊文字＜＠ＴＩＭＥ＞の位置に埋め込まれた時刻を加算した時刻を算出する。具体例を挙げて説明する。例えば、１つ前に位置する特殊文字＜＠ＴＩＭＥ＞の位置に埋め込まれた時刻が「２０１２年１月３０日１２時１１分２０秒」である場合に、取得したパラメタが示す値が「３０」である場合には、伸張部２５ｂは、次のような処理を行う。すなわち、伸張部２５ｂは、「２０１２年１月３０日１２時１１分２０秒」に「３０」秒を加算した時刻「２０１２年１月３０日１２時１１分５０秒」を算出する。これにより、圧縮されたパラメタ「３０」が伸張されて、時刻「２０１２年１月３０日１２時１１分５０秒」となる。
【００６７】
また、伸張部２５ｂは、特定したフォーマット文字列の特殊文字に含まれる文字列が「ＩＤ」である場合には、次のような処理を行う。伸張部２５ｂは、まず、引数としてわたされたログファイルのＩＤが示すログファイル２４ａのレコードのうち、「ログＩＤ」の項目に、引数としてわたされたログＩＤが登録されたレコードを特定する。そして、伸張部２５ｂは、特定したレコードの「パラメタ」の項目に登録された、圧縮されたパラメタを取得する。
【００６８】
そして、伸張部２５ｂは、取得したパラメタが示すＩＤに対応する文字列を固定文字辞書１４ｄから取得する。具体例を挙げて説明する。例えば、文字列「ＭＳＧ−ＩＤ−０００１」とＩＤ「Ｅ１」とが固定文字辞書１４ｄに登録されている場合に、取得したパラメタが示すＩＤが「Ｅ１」である場合には、伸張部２５ｂは、次のような処理を行う。すなわち、伸張部２５ｂは、ＩＤ「Ｅ１」に対応する文字列「ＭＳＧ−ＩＤ−０００１」を固定文字辞書１４ｄから取得する。これにより、圧縮されたパラメタ「Ｅ１」が伸張されて、文字列「ＭＳＧ−ＩＤ−０００１」となる。
【００６９】
その後、伸張部２５ｂは、特定したフォーマット文字列中の特殊文字を、圧縮されたパラメタの伸張結果に変換することで、ログ情報を伸張する。例えば、伸張部２５ｂが特定したフォーマット文字列が「＜＠ＴＩＭＥ＞：＜＠ＩＤ＞の実行に成功しました」である場合について説明する。この場合、伸張部２５ｂは、フォーマット文字列中の特殊文字＜＠ＴＩＭＥ＞を、算出した時刻「２０１２年１月３０日１２時１１分５０秒」に変換し、特殊文字＜＠ＩＤ＞を、取得した文字列「ＭＳＧ−ＩＤ−０００１」に変換する。その結果、伸張部２５ｂは、指定されたログＩＤが示すログ情報を伸張して「２０１２年１月３０日１２時１１分５０秒：ＭＳＧ−ＩＤ−０００１の実行に成功しました」というログ情報を得る。このようにして、伸張部２５ｂは、ログ情報の伸張を行う。
【００７０】
なお、伸張部２５ｂは、特定したフォーマット文字列の特殊文字に含まれる文字列が「連番」である場合には、次のような処理を行う。伸張部２５ｂは、まず、引数としてわたされたログファイルのＩＤが示すログファイル２４ａのレコードのうち、「ログＩＤ」の項目に、引数としてわたされたログＩＤが登録されたレコードを特定する。そして、伸張部２５ｂは、特定したレコードの「パラメタ」の項目に登録された、圧縮されたパラメタを取得する。
【００７１】
そして、伸張部２５ｂは、取得したパラメータが示す数値に、特定したフォーマット文字列に含まれる特殊文字＜＠連番＞の位置より１つ前に位置する特殊文字＜＠連番＞の位置に埋め込まれた数値を加算した数値を算出する。具体例を挙げて説明する。例えば、１つ前に位置する特殊文字＜＠連番＞の位置に埋め込まれた数値が「５０」である場合に、取得したパラメタが示す数値が「５」である場合には、伸張部２５ｂは、次のような処理を行う。すなわち、伸張部２５ｂは、「５０」に「５」を加算した数値「５５」を算出する。これにより、圧縮されたパラメタ「５」が伸張されて、数値「５５」となる。そして、伸張部２５ｂは、特定したフォーマット文字列中の特殊文字＜＠連番＞を、算出した数値に変換する。これにより、ログ情報が伸張される。
【００７２】
表示制御部２５ｃは、伸張部２５ｂにより伸張されたログ情報を表示するように、表示部２２の表示を制御する。これにより、表示部２２は、伸張されたログ情報を表示する。
【００７３】
制御部２５は、ＡＳＩＣ（Application  Specific  Integrated  Circuit）やＦＰＧＡ（Field  Programmable  Gate  Array）などの集積回路またはＣＰＵ（Central  Processing  Unit）やＭＰＵ（Micro  Processing  Unit）などの電子回路である。  
【００７４】
［処理の流れ］
次に、本実施例に係るサーバ１０の処理の流れを説明する。図６は、実施例に係る生成処理の手順を示すフローチャートである。この生成処理の実行タイミングとしては様々なタイミングが考えられる。例えば、生成処理は、入力部１１から送信された生成処理を実行する指示を制御部１５が受信した場合に実行される。
【００７５】
図６に示すように、抽出部１５ａは、新たな辞書ＩＤを生成し、生成した辞書ＩＤが「辞書ＩＤ」の項目に登録された辞書１４ｂを生成する（Ｓ１０１）。そして、抽出部１５ａは、ソースコード１４ｂを読み込む（Ｓ１０２）。続いて、抽出部１５ａは、まだ、辞書登録関数を検索していない場合には、ソースコード１４ｂの中から１つ目の辞書登録関数を検索し、辞書登録関数を検索したことがある場合には、ソースコード１４ｂの中から次の辞書登録関数を検索する（Ｓ１０３）。そして、抽出部１５ａは、検索の結果、辞書登録関数が得られたか否かを判定する（Ｓ１０４）。
【００７６】
検索の結果、辞書登録関数が得られた場合（Ｓ１０４肯定）には、抽出部１５ａは、得られた辞書登録関数のフォーマット文字列から特殊文字を抽出する。そして、抽出部１５ａは、抽出した特殊文字中のパラメタの圧縮方法を特定する文字列を、区切り文字「，」で並べた文字列を「圧縮フォーマット」に登録する文字列として生成する（Ｓ１０５）。その後、抽出部１５ａは、得られた辞書登録関数のログＩＤ、生成した文字列、得られた辞書登録関数のフォーマット文字列の組を辞書１４ｂに登録し（Ｓ１０６）、Ｓ１０３に戻る。一方、検索の結果、辞書登録関数が得られない場合（Ｓ１０４否定）には、処理を終了する。
【００７７】
図７は、実施例に係る実行処理の手順を示すフローチャートである。この実行処理の実行タイミングとしては様々なタイミングが考えられる。例えば、実行処理は、入力部１１から送信された実行処理を実行する指示を制御部１５が受信した場合に実行される。
【００７８】
図７に示すように、実行部１５ｃは、指示に含まれる実行対象のアプリケーション１４ｃに対応する辞書１４ｂを読み込む（Ｓ２０１）。そして、実行部１５ｃは、アプリケーション１４ｃを実行し（Ｓ２０２）、処理を終了する。
【００７９】
図８は、実施例に係るアプリケーションが実行する、第一のログ出力関数を呼び出して、パラメタを制御部の内部メモリに格納する処理の手順を示すフローチャートである。
【００８０】
図８に示すように、第一のログ出力関数を呼び出したアプリケーション１４ｃは、クライアント端末２０へ、ログ出力先が示すログファイルを記憶しているか否かを応答する指示を送信する（Ｓ３０１）。次に、アプリケーション１４ｃは、クライアント端末２０からの応答を受信したか否かを判定する（Ｓ３０２）。応答を受信していない場合（Ｓ３０２否定）には、アプリケーション１４ｃは、再び、Ｓ３０２の判定を行う。
【００８１】
一方、応答を受信した場合（Ｓ３０２肯定）には、アプリケーション１４ｃは、受信した応答が、ログファイルを記憶していることを示すか否かを判定する（Ｓ３０３）。ログファイルを記憶していることを示さない場合（Ｓ３０３否定）には、Ｓ３０７へ進む。一方、ログファイルを記憶していることを示す場合（Ｓ３０３肯定）には、アプリケーション１４ｃは、クライアント端末２０へ、ログ出力先が示すログファイルの「辞書ＩＤ」の項目に登録された辞書ＩＤを送信する旨の指示を送信する（Ｓ３０４）。続いて、アプリケーション１４ｃは、クライアント端末２０から辞書ＩＤを受信したか否かを判定する（Ｓ３０５）。辞書ＩＤを受信していない場合（Ｓ３０５否定）には、アプリケーション１４ｃは、再び、Ｓ３０５の判定を行う。
【００８２】
一方、辞書ＩＤを受信した場合（Ｓ３０５肯定）には、アプリケーション１４ｃは、受信した辞書ＩＤと、引数として第一のログ出力関数にわたされた辞書ＩＤとが一致するか否かを判定する（Ｓ３０６）。一致しない場合（Ｓ３０６否定）には、アプリケーション１４ｃは、エラー通知を表示するように、表示部１２の表示を制御し（Ｓ３１０）、処理結果を内部メモリに格納し、リターンする。
【００８３】
一方、一致する場合（Ｓ３０６肯定）には、アプリケーション１４ｃは、第一のログ出力関数にわたされた辞書ＩＤが示す辞書１４ｂを参照する。そして、アプリケーション１４ｃは、第一のログ出力関数にわたされたログＩＤが「ログＩＤ」の項目に登録されたレコードの「圧縮フォーマット」の項目に登録された文字列から、特殊文字中のパラメタの圧縮方法を特定する（Ｓ３０７）。そして、アプリケーション１４ｃは、特定した圧縮方法によってパラメタを圧縮する（Ｓ３０８）。
【００８４】
そして、アプリケーション１４ｃは、第一のログ出力関数に引数としてわたされたログＩＤ、辞書ＩＤおよびログ出力先、ならびに、圧縮されたパラメタを対応付けて制御部１５の内部メモリに格納し（Ｓ３０９）、リターンする。
【００８５】
図９は、実施例に係るアプリケーションが実行する、第二のログ出力関数を呼び出して、内部メモリに格納されたパラメタを読み取ってクライアント端末へ送信するように制御する処理の手順を示すフローチャートである。
【００８６】
図９に示すように、第二のログ出力関数を呼び出したアプリケーション１４ｃは、次のような処理を行う。すなわち、アプリケーション１４ｃは、第二のログ出力関数に引数としてわたされたログＩＤと同一のログＩＤに対応付けられた辞書ＩＤおよびログ出力先、ならびに、圧縮されたパラメタを内部メモリから取得する（Ｓ３５１）。続いて、アプリケーション１４ｃは、取得した辞書ＩＤ、圧縮されたパラメタ、第二のログ出力関数に引数としてわたされたログＩＤを、次の装置へ送信するように制御する。すなわち、アプリケーション１４ｃは、かかる辞書ＩＤ、パラメタおよびログＩＤを、取得したログ出力先が示すログファイル２４ａを記憶部２４に記憶するクライアント端末２０へ送信するように制御し（Ｓ３５２）、リターンする。
【００８７】
次に、本実施例に係るクライアント端末２０の処理の流れを説明する。図１０は、実施例に係る表示制御処理の手順を示すフローチャートである。表示制御処理は、例えば、入力部２１から、表示制御処理を実行する指示を制御部２５が受信した場合に実行される。なお、かかる指示には、ユーザから指定されたログファイルのＩＤ、および、ユーザから指定されたログＩＤが含まれる。
【００８８】
図１０に示すように、伸張部２５ｂは、指定されたログファイルのＩＤが示すログファイル２４ａを取得し、取得したログファイル２４ａの「辞書ＩＤ」の項目に登録された辞書ＩＤを取得する（Ｓ４０１）。そして、伸張部２５ｂは、取得した辞書ＩＤが示す辞書１４ｂを読み込む（Ｓ４０２）。続いて、伸張部２５ｂは、ログ伸張関数を呼び出して、ログ情報を伸張する処理を実行する（Ｓ４０３）。その後、表示制御部２５ｃは、伸張部２５ｂにより伸張されたログ情報を表示するように、表示部２２の表示を制御する（Ｓ４０４）。
【００８９】
図１１は、実施例に係る伸張部が実行する、ログ伸張関数を呼び出して、ログ情報を伸張する処理の手順を示すフローチャートである。図１１に示すように、ログ伸張関数を呼び出した伸張部２５ｂは、辞書１４ｂのレコードのうち、「ログＩＤ」の項目に、引数としてわたされたログＩＤが登録されたレコードを特定する。そして、伸張部２５ｂは、特定したレコードの「伸張フォーマット」の項目に登録されたフォーマット文字列を特定する（Ｓ５０１）。
【００９０】
続いて、伸張部２５ｂは、特定したフォーマット文字列に含まれる特殊文字に対応するパラメタの種類に応じて、引数としてわたされたログＩＤが示すログ情報を伸張し（Ｓ５０２）、リターンする。
【００９１】
［実施例の効果］
上述してきたように、本実施例に係るログ管理システム１では、サーバ１０が、ログ情報を圧縮して出力するアプリケーションの配備前に、アプリケーションのソースコードからログ情報に関するメッセージ形式の定義情報を抽出する。そして、サーバ１０が、ソースコードに基づくアプリケーションを配備する。また、クライアント端末２０が、ログ情報を取得した場合に、定義情報に基づいてログ情報をメッセージ形式で出力する。すなわち、本実施例に係るログ管理システム１では、アプリケーションから出力されるログ情報が、ソースコードから抽出された定義情報によってメッセージ形式で出力される。したがって、ログ管理システム１によれば、ログを出力する処理の遅延を抑制することができる。
【００９２】
また、本実施例に係るサーバ１０によれば、圧縮されたパラメタが内部メモリに格納され、内部メモリに格納されたパラメタが出力される。したがって、サーバ１０によれば、パラメタに辞書を付加して内部メモリに格納しないため、内部メモリの容量が圧迫されるような状態になることを抑制することができる。
【００９３】
また、本実施例に係るサーバ１０によれば、ログ情報全体ではなく、ログ情報の一部のパラメタを圧縮して出力するため、上述したように、ログを出力する処理の遅延を抑制することができる。
【００９４】
さて、これまで開示の装置に関する実施例について説明したが、本発明は上述した実施例以外にも、種々の異なる形態にて実施されてよいものである。そこで、以下では、本発明に含まれる他の実施例を説明する。
【００９５】
また、実施例において説明した各処理のうち、自動的に行われるものとして説明した処理の全部または一部を手動的に行うこともできる。
【００９６】
また、各種の負荷や使用状況などに応じて、各実施例において説明した各処理の各ステップでの処理を任意に細かくわけたり、あるいはまとめたりすることができる。また、ステップを省略することもできる。
【００９７】
また、各種の負荷や使用状況などに応じて、各実施例において説明した各処理の各ステップでの処理の順番を変更できる。
【００９８】
また、図示した各装置の各構成要素は機能概念的なものであり、必ずしも物理的に図示の如く構成されていることを要しない。すなわち、各装置の分散・統合の具体的状態は図示のものに限られず、その全部または一部を、各種の負荷や使用状況などに応じて、任意の単位で機能的または物理的に分散・統合して構成することができる。
【００９９】
［抽出プログラム］
また、上記の実施例で説明したサーバ１０の各種の処理は、あらかじめ用意されたプログラムをパーソナルコンピュータやワークステーションなどのコンピュータシステムで実行することによって実現することもできる。そこで、以下では、図１２を用いて、上記の実施例で説明したサーバ１０と同様の機能を有する抽出プログラムを実行するコンピュータの一例を説明する。
【０１００】
図１２は、抽出プログラムを実行するコンピュータを示す図である。図１２に示すように、コンピュータ３００は、ＣＰＵ３１０、ＲＯＭ３２０、ＨＤＤ３３０、ＲＡＭ３４０を有する。これら３００〜３４０の各部は、バス３５０を介して接続される。
【０１０１】
ＲＯＭ３２０には、上記の実施例で示す抽出部１５ａ、配備部１５ｂ、実行部１５ｃ、送信制御部１５ｄと同様の機能を発揮する抽出プログラム３２０ａが予め記憶される。なお、抽出プログラム３２０ａについては、適宜分離しても良い。
【０１０２】
そして、ＣＰＵ３１０が、抽出プログラム３２０ａをＲＯＭ３２０から読み出して実行する。
【０１０３】
そして、ＨＤＤ３３０には、ソースコード、辞書、アプリケーション、固定文字辞書が設けられる。ソースコード、辞書、アプリケーション、固定文字辞書のそれぞれは、ソースコード１４ａ、辞書１４ｂ、アプリケーション１４ｃ、固定文字辞書１４ｄに対応する。
【０１０４】
そして、ＣＰＵ３１０は、ソースコード、辞書、アプリケーション、固定文字辞書を読み出してＲＡＭ３４０に格納する。さらに、ＣＰＵ３１０は、ＲＡＭ３４０に格納されたソースコード、辞書、アプリケーション、固定文字辞書を用いて、抽出プログラム３２０ａを実行する。なお、ＲＡＭ３４０に格納される各データは、常に全てのデータがＲＡＭ３４０に格納されなくともよく、全てのデータのうち処理に用いられるデータのみがＲＡＭ３４０に格納されれば良い。
【０１０５】
なお、上記した抽出プログラムについては、必ずしも最初からＨＤＤ３３０に記憶させなくともよい。
【０１０６】
例えば、コンピュータ３００に挿入されるフレキシブルディスク（ＦＤ）、ＣＤ−ＲＯＭ、ＤＶＤディスク、光磁気ディスク、ＩＣカードなどの「可搬用の物理媒体」にプログラムを記憶させておく。そして、コンピュータ３００がこれらからプログラムを読み出して実行するようにしてもよい。  
【０１０７】
さらには、公衆回線、インターネット、ＬＡＮ、ＷＡＮなどを介してコンピュータ３００に接続される「他のコンピュータ（またはサーバ）」などにプログラムを記憶させておく。そして、コンピュータ３００がこれらからプログラムを読み出して実行するようにしてもよい。
【０１０８】
［伸張プログラム］
また、上記の実施例で説明したクライアント端末２０の各種の処理は、あらかじめ用意されたプログラムをパーソナルコンピュータやワークステーションなどのコンピュータシステムで実行することによって実現することもできる。そこで、以下では、図１３を用いて、上記の実施例で説明したクライアント端末２０と同様の機能を有する伸張プログラムを実行するコンピュータの一例を説明する。
【０１０９】
図１３は、伸張プログラムを実行するコンピュータを示す図である。図１３に示すように、コンピュータ４００は、ＣＰＵ４１０、ＲＯＭ４２０、ＨＤＤ４３０、ＲＡＭ４４０を有する。これら４００〜４４０の各部は、バス４５０を介して接続される。
【０１１０】
ＲＯＭ４２０には、上記の実施例で示す取得部２５ａ、伸張部２５ｂ、表示制御部２５ｃと同様の機能を発揮する伸張プログラム４２０ａが予め記憶される。なお、伸張プログラム４２０ａについては、適宜分離しても良い。
【０１１１】
そして、ＣＰＵ４１０が、伸張プログラム４２０ａをＲＯＭ４２０から読み出して実行する。
【０１１２】
そして、ＨＤＤ４３０には、ログファイル、辞書、固定文字辞書が設けられる。ログファイル、辞書、固定文字辞書のそれぞれは、ログファイル２４ａ、辞書１４ｂ、固定文字辞書１４ｄに対応する。
【０１１３】
そして、ＣＰＵ４１０は、ログファイル、辞書、固定文字辞書を読み出してＲＡＭ４４０に格納する。さらに、ＣＰＵ４１０は、ＲＡＭ４４０に格納されたログファイル、辞書、固定文字辞書を用いて、伸張プログラム４２０ａを実行する。なお、ＲＡＭ４４０に格納される各データは、常に全てのデータがＲＡＭ４４０に格納されなくともよく、全てのデータのうち処理に用いられるデータのみがＲＡＭ３４０に格納されれば良い。
【０１１４】
なお、上記した伸張プログラムについては、必ずしも最初からＨＤＤ４３０に記憶させなくともよい。
【０１１５】
例えば、コンピュータ４００に挿入されるフレキシブルディスク（ＦＤ）、ＣＤ−ＲＯＭ、ＤＶＤディスク、光磁気ディスク、ＩＣカードなどの「可搬用の物理媒体」にプログラムを記憶させておく。そして、コンピュータ４００がこれらからプログラムを読み出して実行するようにしてもよい。  
【０１１６】
さらには、公衆回線、インターネット、ＬＡＮ、ＷＡＮなどを介してコンピュータ３００に接続される「他のコンピュータ（またはサーバ）」などにプログラムを記憶させておく。そして、コンピュータ４００がこれらからプログラムを読み出して実行するようにしてもよい。
【符号の説明】
【０１１７】
１０      サーバ
１４      記憶部
１４ａ    ソースコード
１４ｂ    辞書
１４ｃ    アプリケーション
１４ｄ    固定文字辞書
１５      制御部
１５ａ    抽出部
１５ｂ    配備部
１５ｃ    送信制御部
２０      クライアント端末
２４      記憶部
２４ａ    ログファイル
２５      制御部
２５ａ    取得部
２５ｂ    伸張部
２５ｃ    表示制御部
【図１】
0005906906.tif 000002
【図２】
0005906906.tif 000003
【図３】
0005906906.tif 000004
【図４】
0005906906.tif 000005
【図５】
0005906906.tif 000006
【図６】
0005906906.tif 000007
【図７】
0005906906.tif 000008
【図８】
0005906906.tif 000009
【図９】
0005906906.tif 000010
【図１０】
0005906906.tif 000011
【図１１】
0005906906.tif 000012
【図１２】
0005906906.tif 000013
【図１３】
0005906906.tif 000014