(57)【要約】      （修正有）【課題】ログ出力によるシステムの性能劣化の影響を抑えることができる通信制御プログラムを提供する。【解決手段】通信制御プログラムは、業務処理部の負荷を判定させるため、負荷状況判定要求（業務負荷判定処理の呼出）を発行するＳ９０１。業務処理部の負荷が高負荷か否かを判断しＳ９０２、高負荷である場合Ｓ９０２でＹｅｓ、取得されたログ採取情報をログ中間ファイル格納部へ出力するＳ９０３。一方、高負荷でない場合Ｓ９０２でＮｏ、ログ編集要求（ログ編集処理の呼出）を発行するＳ９０４。ログ編集処理のサブルーチンは、ログメッセージ格納部からログメッセージのテンプレートを取得し、取得したログメッセージのテンプレートにログ採取情報を埋め込んで編集し、編集したログメッセージをログファイル格納部へ出力する。【選択図】図９
2018028738.tif 000002
【特許請求の範囲】
【請求項１】
ログ出力の処理を制御する通信制御プログラムであって、
ログ出力の呼び出しに基づいて、前記呼び出し時に取得可能な、ログを生成するために必要な情報を取得するステップと、
取得された前記情報をログ中間ファイル情報として、ログの生成が開始される前に所定の記憶領域に出力するステップとを、
コンピュータに実行させることを特徴とする通信制御プログラム。
【請求項２】
前記ログ出力の対象業務における業務処理を実行する業務処理部の負荷が所定の負荷を超えているか否かを判断するステップを更に有し、
前記所定の負荷を超えていると判断された場合、取得された前記情報を前記ログ中間ファイル情報として出力することを特徴とする請求項１に記載の通信制御プログラム。
【請求項３】
時間帯、単位時間あたりのデータ送受信量、又はあらかじめ設定された負荷状況に基づいて、前記業務処理部の負荷が前記所定の負荷を超えているか否かを判断することを特徴とする請求項２に記載の通信制御プログラム。
【請求項４】
所定の条件を満たした場合に、前記所定の記憶領域の前記ログ中間ファイル情報を用いてログを生成し、生成された前記ログを出力するステップを更に有する請求項１から３のいずれか１つに記載の通信制御プログラム。
【請求項５】
ログ出力の処理を制御する通信制御装置であって、
ログ出力の呼び出しに基づいて、前記呼び出し時に取得可能な、ログを生成するために必要な情報を取得する取得部と、
取得された前記情報をログ中間ファイル情報として、ログの生成が開始される前に所定の記憶領域に出力する出力部とを、
備えることを特徴とする通信制御装置。
【請求項６】
ログ出力の処理を制御する通信制御方法であって、
ログ出力の呼び出しに基づいて、前記呼び出し時に取得可能な、ログを生成するために必要な情報を取得するステップと、
取得された前記情報をログ中間ファイル情報として、ログの生成が開始される前に所定の記憶領域に出力するステップとを、
有することを特徴とする通信制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ログ出力を制御する通信制御プログラムに関する。
【背景技術】
【０００２】
システムを運用する上で、ログはシステムにおいて何が起きたかを把握するために重要な役割を果たす。例えば、ログはプログラム動作中の状態監視や異常発生時の検知及び原因の調査に用いられる。その他に、業務の証跡として所定期間保存し、各種監査などのためにも用いられる。
【０００３】
従来のログ出力の仕組みの一例は以下のようである。プログラム実行中にログ出力処理が呼び出されると、プログラムにあらかじめ埋め込まれたメッセージＩＤをキーとして、ログメッセージ定義ファイルを検索してログメッセージを取得する。定型化したログメッセージのみでは原因の調査ができないため、引数や変数の値など、そのタイミングでなければ取得できない情報を動的にログメッセージに埋め込み、編集してログファイルに出力する。すなわち、ログメッセージの出力までには、ログメッセージの取得処理、埋め込む情報の取得処理、ログメッセージの編集処理、ログメッセージの出力処理の一連の処理が行われる。ログメッセージを出力する技術が、例えば下記の特許文献１に開示されている。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２０１４−１４９７８３号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかし、例えば、証券取引業務などのように高速処理が求められる場合、上記一連の処理を行うことによって、求められる処理の性能を満たすことがシステム上、困難になってしまう。
【０００６】
本発明は、上記課題に鑑み、ログ出力によるシステムの性能劣化の影響を抑えることができる通信制御プログラムを提供することを目的とする。
【課題を解決するための手段】
【０００７】
上記目的を達成するために、本発明は、ログ出力の処理を制御する通信制御プログラムであって、ログ出力の呼び出しに基づいて、前記呼び出し時に取得可能な、ログを生成するために必要な情報を取得するステップと、取得された前記情報をログ中間ファイル情報として、ログの生成が開始される前に所定の記憶領域に出力するステップとをコンピュータに実行させることを特徴とする。
【０００８】
また、本発明の通信制御プログラムにおいて、前記ログ出力の対象業務における業務処理を実行する業務処理部の負荷が所定の負荷を超えているか否かを判断するステップを更に有し、前記所定の負荷を超えていると判断された場合、取得された前記情報を前記ログ中間ファイル情報として出力することは、好ましい態様である。
【０００９】
また、本発明の通信制御プログラムにおいて、時間帯、単位時間あたりのデータ送受信量、又はあらかじめ決められた負荷状況に基づいて、前記業務処理部の負荷が前記所定の負荷を超えているか否かを判断することは、好ましい態様である。
【００１０】
また、本発明の通信制御プログラムにおいて、所定の条件を満たした場合に、前記所定の記憶領域の前記ログ中間ファイル情報を用いてログを生成し、生成された前記ログを出力するステップを更に有することは、好ましい態様である。
【００１１】
また、本発明は、ログ出力の処理を制御する通信制御装置であって、ログ出力の呼び出しに基づいて、前記呼び出し時に取得可能な、ログを生成するために必要な情報を取得する取得部と、取得された前記情報をログ中間ファイル情報として、ログの生成が開始される前に所定の記憶領域に出力する出力部とを備えることを特徴とする。
【００１２】
また、本発明は、ログ出力の処理を制御する通信制御方法であって、ログ出力の呼び出しに基づいて、前記呼び出し時に取得可能な、ログを生成するために必要な情報を取得するステップと、取得された前記情報をログ中間ファイル情報として、ログの生成が開始される前に所定の記憶領域に出力するステップとを有することを特徴とする。
【発明の効果】
【００１３】
本発明によれば、ログ出力によるシステムの性能劣化の影響を抑えることができる。
【図面の簡単な説明】
【００１４】
【図１】実施の形態に係る通信制御プログラムを実装するサーバを含む通信制御システムの構成の一例を示す図である。
【図２】実施の形態における運用監視装置の構成の一例を示す図である。
【図３】実施の形態に係るサーバの機能構成の一例を示す図である。
【図４】実施の形態に係るサーバを実現するためのハードウェア構成の一例を示す図である。
【図５】実施の形態における業務処理部が高負荷の場合の処理を説明するための図である。
【図６】実施の形態における業務処理部が低負荷の場合の処理を説明するための図である。
【図７】実施の形態におけるログ出力後処理部によるログ出力後処理を説明するための図である。
【図８】実施の形態に係る通信制御プログラムを実装するサーバ２におけるログ出力の処理フローの一例を示すフローチャートである。
【図９】実施の形態におけるログ出力処理のサブルーチンを示すフローチャートである。
【図１０】実施の形態における業務負荷判定処理のサブルーチンを示すフローチャートである。
【図１１】実施の形態におけるログ編集処理のサブルーチンを示すフローチャートである。
【図１２】実施の形態におけるログ出力後処理のサブルーチンを示すフローチャートである。
【図１３】実施の形態におけるログ中間ファイルの一例を示す図である。
【図１４】実施の形態におけるログメッセージのテンプレートの一例を示す図である。
【図１５】実施の形態における業務負荷判定基準（時間帯による基準）の一例を示す図である。
【図１６】実施の形態における業務処理部が高負荷の場合の処理を説明するための図である。
【図１７】実施の形態における業務処理部が低負荷の場合の処理を説明するための図である。
【図１８】実施の形態におけるログメッセージの編集処理のサブルーチンを示すフローチャートである。
【図１９】実施の形態における埋め込み文字変換テーブルの一例を示す図である。
【図２０】実施の形態におけるログメッセージのマージ処理及びソート処理の具体的な例について説明するための図である。
【発明を実施するための形態】
【００１５】
以下、実施の形態について図面を参照して説明する。まず、実施の形態に係る通信制御プログラムを実装するサーバを含む通信制御システムの一例について図１を用いて説明する。通信制御システム１は、サーバ２（通信制御装置）と運用監視装置３から構成されている。サーバ２と運用監視装置３は、ネットワーク４を介して接続されている。
【００１６】
サーバ２は、所定の業務が遂行されている間に、ログ出力処理が呼び出される（ログ出力対象の事象が発生する）と、ログ（以下、ログメッセージとも言う）の生成に必要な情報（例えば、タイムスタンプ、メッセージＩＤ、埋め込み文字など）を取得する。そして、サーバ２は、取得した情報をログ中間ファイルとして、ログの生成が開始される前、すなわち将来的に行われるログの生成処理の前に出力する。ここで、所定の業務とは、例えば高速処理を必要とする業務であって、証券取引業務などである。サーバ２（通信制御プログラム）における詳細な処理については後述する。
【００１７】
運用監視装置３は、図２に示すように、サーバ２によって出力されるログ中間ファイル及びログファイルを監視する監視プログラム２０と、監視結果を出力する監視画面２１から構成される。具体的には、運用監視装置３は、後述するログファイル格納部３８に格納されたログメッセージなどを監視画面２１に表示する。これにより、監視者はシステムにおいて何が起きたかを把握することができる。
【００１８】
次に、実施の形態に係る通信制御プログラムを実装するサーバの機能構成の一例について図３を用いて説明する。図３に示すように、サーバ２は、業務処理部３０、ログ出力処理部３１、ログ編集処理部３２、ログ出力後処理部３３、業務負荷判定処理部３４、業務負荷格納部３５、ログメッセージ格納部３６、ログ中間ファイル格納部３７、ログファイル格納部３８から構成されている。なお、サーバ２の構成はこれに限られるものではなく、他の構成を含むものであってもよい。
【００１９】
業務処理部３０は、サーバ２の主な業務機能を実現する処理部であって、通信制御プログラムの場合、データの送受信を行う。また、ログ出力のための情報採取や、業務処理部３０の業務負荷（負荷状況）を判断するための単位時間あたりのデータ送受信量の測定も行う。
【００２０】
ログ出力処理部３１は、業務処理部３０からのログ出力依頼を受け、ログ出力処理を行う。この際、後述するように、ログ出力処理部３１は、業務負荷判定処理部３４の判定結果を参照し、業務負荷が高負荷の場合はログ採取情報のみをログ中間ファイルとしてログ中間ファイル格納部３７へ出力する。また、業務負荷が低負荷の場合は、ログ出力処理部３１はログ編集処理部３２にログ編集要求を行い、ログ採取情報を渡す。
【００２１】
ここで、ログ採取情報とは、ログの生成に必要な情報であって、ログ出力処理が呼び出された時点でなければ取得できない情報である。具体的には、上述したタイムスタンプ、メッセージＩＤ、埋め込み文字などであり、ログ中間ファイルとして、例えばＣＳＶ（Comma-Separated Values）型式でログ中間ファイル格納部３７へ出力される。
【００２２】
ログ中間ファイルの一例を図１３に示す。ログ中間ファイルは、例えばタイムスタンプ、メッセージＩＤ、埋め込み文字の順に構成される。１つのログ中間ファイルが、１つのレコードとしてログ中間ファイル格納部３７に格納される。なお、この例では埋め込み文字が５つであるが、これに限られるものではない。
【００２３】
ログ編集処理部３２は、業務負荷が低負荷の場合にログ出力処理部３１からのログ編集要求を受け、ログ編集処理を行う。具体的には、ログ採取情報のメッセージＩＤをキーとして、対応するログメッセージ（ログメッセージのテンプレート）をログメッセージ格納部３６から取得し、取得したログメッセージにログ採取情報を埋め込んで編集（生成）する。編集結果（編集後のログメッセージ）はログファイル格納部３８へ出力される。ログメッセージは、運用監視装置３を管理する監視者が目視でメッセージの意味を確認しやすい形式に編集される。なお、ログメッセージの編集は、サーバ２以外の装置やプログラムが行うようにしてもよい。
【００２４】
ここで、ログメッセージ格納部３６に格納されたログメッセージのテンプレートの一例を図１４に示す。ログメッセージには、エラー（Ｅ）、警告（Ｗ）、インフォメーション（Ｉ）、デバッグ（Ｄ）などの種類がある。図１４には、エラーメッセージ（ＥＲＲＯＲ）と警告メッセージ（ＷＡＲＮＩＮＧ）のテンプレートが示されている。例えば、エラーメッセージのテンプレートは、メッセージＩＤ（Ｅ００１）にメッセージ内容（ERROR:001 Error occurred. Ａ＝％ｓ、Ｂ＝％ｄ、Ｃ＝％ｘ、ａｔ ％ｓ-％ｄ）が関連付けられている。上記％は埋込識別子といい、上記ｓ、ｄ、ｘは書式指定子という。％ｓ、％ｄ、％ｘにログ採取情報が埋め込まれる。ログメッセージの編集処理の詳細については後述する。
【００２５】
ログ出力後処理部３３は、業務終了指示などにより、業務処理部３０からのログ出力後処理要求を受け、ログ出力後処理を行う。具体的には、ログ出力後処理部３３は、業務負荷が高負荷の場合にログ中間ファイル格納部３７に格納されたログ採取情報を読み込む。そして、ログ出力後処理部３３は、メッセージＩＤをキーとして対応するログメッセージをログメッセージ格納部３６から取得し、取得したログメッセージにログ採取情報を埋め込んで編集（生成）する。
【００２６】
また、ログ出力後処理部３３は、編集したログメッセージと、ログファイル格納部３８内のログメッセージ（低負荷時に編集されたログメッセージ）とをマージ（併合）し、タイムスタンプ順などでソート（整列）してログファイル格納部３８に出力する。所定の業務を遂行している間には、業務負荷が低負荷のときと高負荷のときが混在する場合がある。そのため、業務終了後に、それぞれの負荷時に編集されたログメッセージをマージする必要がある。そこで、ログ出力後処理部３３は、業務終了後に、業務終了後に編集される高負荷時のログメッセージと、低負荷の場合に編集され、ログファイル格納部３８に格納されたログメッセージとをマージし、ソートして出力する。ログ出力後処理部３３によるマージ処理及びソート処理の詳細については後述する。なお、ログ出力後処理部３３は、同一機器（プログラム）内に配置する場合と、別の機器（プログラム）に配置する場合が考えられる。
【００２７】
業務負荷判定処理部３４は、業務負荷判定基準を参照し、業務処理部３０の負荷を判定する。業務負荷判定基準としては、例えば、時間帯によるもの、データ送受信量によるもの、あらかじめ業務処理部３０の負荷が高負荷か低負荷に設定されているものなどがある。具体的には、負荷判定時の時間が所定の時間帯にある場合、業務処理部３０の負荷は高い（高負荷）と判定する。また、単位時間あたりのデータ送受信量が所定の閾値を超えている場合、業務処理部３０は高負荷と判定する。また、あらかじめ業務処理部３０の負荷が設定されている場合、設定された負荷に基づいて、業務処理部３０の負荷を判定する。例えば、あらかじめ負荷が高負荷と設定されている場合、業務処理部３０の負荷は高負荷と判定される。
【００２８】
業務負荷格納部３５は、業務負荷判定処理部３４が負荷を判定する際に用いる業務負荷判定基準を格納する。業務負荷判定基準（時間帯による基準）の一例を図１５に示す。例えば、始業時（９時から１０時）、昼休み前（１１時から１２時）、終業前（１６時から１７時）は注文などの依頼が集中するなどで高負荷となり、それ以外は依頼が集中せずに低負荷となるという経験則があるとする。その場合、図１５に示すような業務負荷判定基準となる。このような業務負荷判定基準を用いて高負荷であるか低負荷であるかが判定される。
【００２９】
ログメッセージ格納部３６には、上述したように、ログメッセージ（ログメッセージのテンプレート）がメッセージＩＤと関連付けられて格納されている。
【００３０】
次に、実施の形態に係る通信制御プログラムを実装するサーバ２を実現するためのハードウェア構成の一例について図４を用いて説明する。ハードウェア構成は、例えば、ＣＰＵ４１、ＨＤＤ（Ｈａｒｄ Ｄｉｓｋ Ｄｒｉｖｅ）４２、ＲＡＭ（Ｒａｎｄｏｍ Ａｃｃｅｓｓ Ｍｅｍｏｒｙ）４３、ＲＯＭ（Ｒｅａｄ Ｏｎｌｙ Ｍｅｍｏｒｙ）４４、グラフィック処理装置４５、入力インタフェース（Ｉ／Ｆ）４６、通信インタフェース（Ｉ／Ｆ）４７、バス４８を備えている。ＣＰＵ４１、ＨＤＤ４２、ＲＡＭ４３、ＲＯＭ４４、グラフィック処理装置４５、入力インタフェース（Ｉ／Ｆ）４６、通信インタフェース（Ｉ／Ｆ）４７は、例えば、バス４８を介して互いに接続されている。
【００３１】
ＣＰＵ４１は、バス４８を介して、ＨＤＤ４２などに格納されるサーバ２の各種処理を行うためのプログラム（例えば、通信制御プログラムなど）を読み込み、読み込んだプログラムをＲＡＭ４３に一時的に格納し、そのプログラムにしたがって各種処理を行うものである。
【００３２】
ＨＤＤ４２には、サーバ２の各種処理を行うためのアプリケーションプログラムや、サーバ２の処理に必要なデータなどが格納される。
【００３３】
ＲＡＭ４３は、揮発性メモリであって、ＣＰＵ４１に実行させるためのＯＳ（Ｏｐｅｒａｔｉｎｇ Ｓｙｓｔｅｍ）プログラムやアプリケーションプログラムの一部が一時的に格納される。また、ＲＡＭ４３には、ＣＰＵ４１による処理に必要な各種データが格納される。
【００３４】
ＲＯＭ４４は、不揮発性メモリであって、ブートプログラムやＢＩＯＳ（Ｂａｓｉｃ Ｉｎｐｕｔ／Ｏｕｔｐｕｔ Ｓｙｓｔｅｍ）などのプログラムを記憶する。
【００３５】
グラフィック処理装置４５は、モニタ４００と接続可能であって、モニタ４００に表示させる情報を生成するものである。
【００３６】
入力インタフェース（Ｉ／Ｆ）４６は、キーボード４０１やマウス４０２などを介して入力される情報を受け付けるものである。
【００３７】
通信インタフェース（Ｉ／Ｆ）４７は、外部（運用監視装置３や利用者が使用する端末など）とネットワーク４を介してデータの送受信を行うものである。
【００３８】
バス４８は、各装置間の制御信号、データ信号などの授受を媒介する経路である。なお、運用監視装置３を実現するためのハードウェア構成も、サーバ２と同様、ＣＰＵ、ＨＤＤ、各種インタフェースなどを含む。
【００３９】
次に、上述した業務処理部３０が高負荷の場合の処理の流れについて図５、図１６を用いて説明する。図５に示すように、サーバ２は、証券取引などにおける注文のために利用者によって送信されたメッセージを受信する。ここで、メッセージ受信による注文のメッセージ送信がログ出力対象の事象であるとすると、業務処理部３０は、ログ出力対象事象が発生したと認識する。業務処理部３０は、ログ出力対象事象が発生したことにより、ログ採取情報（例えば、タイムスタンプ、メッセージＩＤ、埋め込み文字など）を取得する。埋め込み文字は、事象発生時のプログラムの状態を示す情報であり、主にプログラムの変数値である。図１６に示す例では、埋め込み文字は１番目から５番目まであり、順に変数Ａの値（ａａａ）、変数Ｂの値（１）、変数Ｃの値（１６）、変数Ｄの値（ｄｄｄ）、変数Ｅの値（５）である。
【００４０】
業務処理部３０は、ログ採取情報の取得後、ログ出力処理部３１に対してログ出力依頼を発行する。ログ出力処理部３１は、業務負荷判定処理部３４に対して、負荷状況判定要求を発行する。業務負荷判定処理部３４は、業務負荷格納部３５から業務負荷判定基準を取得し、取得した業務負荷判定基準に基づいて、例えば業務負荷を高負荷と判定する。ログ出力処理部３１は、業務負荷が高負荷のため、取得したログ採取情報のみをログ中間ファイルとしてログ中間ファイル格納部３７へ出力する。出力されるログ中間ファイルの一例が、図１６中に詳細として記載されている。
【００４１】
このとき、運用監視装置３は、監視プログラム２０により、ログ中間ファイルとログファイルを監視し、監視対象の事象が発生すると、監視結果を監視画面２１に出力する。後述する低負荷の場合も同様である。
【００４２】
一方、業務処理部３０が低負荷の場合の処理の流れについて図６、図１７を用いて説明する。業務負荷判定処理部３４による業務負荷を判定するまでの処理は、図５に示す高負荷の場合と同様であるため説明を省略する。業務負荷判定処理部３４が、業務負荷の判定の結果、低負荷であると判定すると、ログ出力処理部３１は、ログ編集処理部３２に対してログ編集要求を発行する。このとき、ログ出力処理部３１は、ログ採取情報をログ編集処理部３２へ渡す。
【００４３】
ログ編集処理部３２は、ログ出力処理部３１から渡されたログ採取情報に含まれるメッセージＩＤをキーとして、ログメッセージ格納部３６から対応するログメッセージのテンプレートを取得する。ログ編集処理部３２は、取得したログメッセージのテンプレートに従ってログメッセージを編集（生成）する。すなわち、ログ編集処理部３２は、テンプレートの文字列を１文字ずつ順に解析し、埋め込み文字を埋め込む位置が出現（埋込識別子が出現）した場合、取得したログ採取情報の埋め込み文字を１項目ずつ変換しながらログメッセージを編集する。ログメッセージの編集処理の詳細については後述する。ログ編集処理部３２は、編集されたログメッセージをログファイル格納部３８に出力する。編集されたログメッセージの一例が、図１７中に詳細として記載されている。
【００４４】
次に、上述したログ出力後処理部３３によるログ出力後処理について図７、図１６を用いて説明する。監視者などから業務終了指示が出され、業務処理部３０が、所定の条件を満たした場合、すなわち業務終了事象を検知した場合、ログ出力後処理部３３に対してログ出力後処理要求を発行する。ログ出力後処理部３３は、ログ中間ファイル格納部３７のレコードを読み込み、１レコードごとに以下のようにログメッセージを編集（生成）する。
【００４５】
ログ出力後処理部３３は、読み込んだレコードのメッセージＩＤをキーとして、ログメッセージ格納部３６から対応するログメッセージのテンプレートを取得する。ログ出力後処理部３３は、取得したログメッセージのテンプレートに対して、レコードに含まれるタイムスタンプやその他の埋め込み文字などを反映し、ログメッセージを編集する。テンプレートにタイムスタンプや埋め込み文字を反映させる方法は、上述した低負荷時のログ編集処理部３２による方法と同様である。このように、ログメッセージの編集処理を業務終了後などに後処理として行うことで、業務中の１つの事象のログ出力にかかる処理時間を短縮でき、業務の処理性能を向上させることができる。
【００４６】
ログ出力後処理部３３は、ログファイル格納部３８のログメッセージ（低負荷時に編集されたログメッセージ）をすべて読み込む。ログ出力後処理部３３は、上記編集したログメッセージと、ログファイル格納部３８から読み込んだログメッセージとをマージし、例えばタイムスタンプの昇順にソートする。ログ出力後処理部３３は、マージしてソートしたログメッセージをログファイル格納部３８に出力する。なお、業務が終了しているため、運用監視装置３による監視も終了する。
【００４７】
次に、実施の形態に係る通信制御プログラムを実装するサーバ２におけるログ出力の処理フローの一例について図８を用いて説明する。図８に示すように、サーバ２（通信制御プログラム）は、業務における事象（例えば、証券取引などの事象）が発生したか否かを判断し（ステップＳ８０１）、事象が発生したと判断した場合（ステップＳ８０１でＹｅｓ）、発生した事象に応じた業務処理を行う（ステップＳ８０２）。なお、事象が発生したと判断しない場合（ステップＳ８０１でＮｏ）、ステップＳ８０１へ戻る。
【００４８】
サーバ２は、ログ出力対象の事象（例えば、メッセージ送信事象）が発生したか否かを判断し（ステップＳ８０３）、発生した場合（ステップＳ８０３でＹｅｓ）、ログ採取情報を取得し（ステップＳ８０４）、ログ出力依頼（ログ出力処理の呼出）を発行する（ステップＳ８０５）。ログ出力処理については後述する。なお、ログ出力対象の事象が発生していない場合（ステップＳ８０３でＮｏ）、ステップＳ８０６へ進む。
【００４９】
サーバ２は、受け付けた事象が業務終了の事象であるか否かを判断し（ステップＳ８０６）、業務終了の事象である場合（ステップＳ８０６でＹｅｓ）、ログ出力後処理要求（ログ出力後処理の呼出）を発行する（ステップＳ８０７）。ログ出力後処理については後述する。
【００５０】
次に、上記ログ出力処理のサブルーチンについて図９を用いて説明する。サーバ２（通信制御プログラム）は、業務処理部３０の負荷を判定させるため、負荷状況判定要求（業務負荷判定処理の呼出）を発行する（ステップＳ９０１）。業務負荷判定処理については後述する。サーバ２は、業務処理部３０の負荷が高負荷か否かを判断し（ステップＳ９０２）、高負荷である場合（ステップＳ９０２でＹｅｓ）、取得されたログ採取情報をログ中間ファイル格納部３７へ出力する（ステップＳ９０３）。一方、高負荷でない場合（ステップＳ９０２でＮｏ）、ログ編集要求（ログ編集処理の呼出）を発行する（ステップＳ９０４）。ログ編集処理については後述する。
【００５１】
次に、上記業務負荷判定処理のサブルーチンについて図１０を用いて説明する。サーバ２（通信制御プログラム）は、業務負荷を、例えばデフォルト値の低負荷とセットし（ステップＳ１００１）、業務負荷格納部３５から業務負荷判定基準を取得する（ステップＳ１００２）。サーバ２は、取得した業務負荷判定基準が時間帯による判定基準か否かを判断し（ステップＳ１００３）、時間帯によるものの場合（ステップＳ１００３でＹｅｓ）、現在の時刻の情報を取得する（ステップＳ１００４）。
【００５２】
サーバ２は、取得した時刻が高負荷の時間帯であるか否かを判断し（ステップＳ１００５）、高負荷の時間帯の場合（ステップＳ１００５でＹｅｓ）、業務負荷を高負荷とセットする（ステップＳ１００６）。
【００５３】
一方、取得した業務負荷判定基準が時間帯による判定基準でない場合（ステップＳ１００３でＮｏ）、サーバ２は、単位時間あたりのデータ送受信量による判定基準か否かを判断し（ステップＳ１００７）、データ送受信量によるものの場合（ステップＳ１００７でＹｅｓ）、単位時間あたりのデータ送受信量を取得する（ステップＳ１００８）。サーバ２は、取得したデータ送受信量が所定の閾値以上であるか否かを判断し（ステップＳ１００９）、所定の閾値以上である場合（ステップＳ１００９でＹｅｓ）、業務負荷を高負荷とセットする（ステップＳ１０１０）。なお、所定の閾値以上でない場合（ステップＳ１００９でＮｏ）、業務負荷判定処理を終了する。
【００５４】
また、取得した業務負荷判定基準が単位時間あたりのデータ送受信量による判定基準でない場合（ステップＳ１００７でＮｏ）、サーバ２は、あらかじめ負荷が設定されたもの、すなわち高負荷であるか又は低負荷であるかあらかじめ負荷が設定されているか否かを判断し（ステップＳ１０１１）、あらかじめ負荷が設定されている場合（ステップＳ１０１１でＹｅｓ）、設定が高負荷であるか否かを判断し（ステップＳ１０１２）、高負荷である場合（ステップＳ１０１２でＹｅｓ）、業務負荷を高負荷とセットする（ステップＳ１０１３）。なお、あらかじめ負荷が設定されていない場合（ステップＳ１０１１でＮｏ）及び設定が高負荷でない場合（ステップＳ１０１２でＮｏ）、業務負荷判定処理を終了する。
【００５５】
次に、上記ログ編集処理のサブルーチンについて図１１を用いて説明する。サーバ２（通信制御プログラム）は、ログメッセージ格納部３６からログメッセージのテンプレートを取得し（ステップＳ１１０１）、取得したログメッセージのテンプレートにログ採取情報を埋め込んで編集する（ステップＳ１１０２）。ログメッセージの編集処理の詳細については後述する。サーバ２は、編集したログメッセージをログファイル格納部３８へ出力する（ステップＳ１１０３）。
【００５６】
次に、上記ログ出力後処理のサブルーチンについて図１２を用いて説明する。サーバ２（通信制御プログラム）は、ログ中間ファイル格納部３７から１つのレコードを読み込み（ステップＳ１２０１）、ログメッセージ格納部３６からステップＳ１２０１で読み込んだレコードのメッセージＩＤに対応するログメッセージのテンプレートを取得する（ステップＳ１２０２）。サーバ２は、取得したログメッセージのテンプレートにログ採取情報を埋め込んで編集する（ステップＳ１２０３）。ログメッセージの編集処理の詳細については後述する。このとき、編集したログメッセージを不図示のバッファに格納する（ステップＳ１２０４）。サーバ２は、次のレコードがないか否かを判断し（ステップＳ１２０５）、次のレコードがある場合（ステップＳ１２０５でＮｏ）、ステップＳ１２０１へ戻る。
【００５７】
一方、次のレコードがない場合（ステップＳ１２０５でＹｅｓ）、サーバ２は、ログファイル格納部３８から全てのログメッセージ（低負荷時に編集されたログメッセージ）を読み込み、バッファにマージ（追加）する（ステップＳ１２０６）。そして、サーバ２は、バッファ中の全てのログメッセージをタイムスタンプ順でソートする（ステップＳ１２０７）。ログメッセージのマージ処理及びソート処理の詳細については後述する。サーバ２は、バッファ中の全てのログメッセージをログファイル格納部３８へ出力する（ステップＳ１２０８）。
【００５８】
ここで、上記ログメッセージの編集処理のサブルーチンについて図１８を用いて説明する。以下では、処理の主体をログ出力後処理部３３として説明しているが、低負荷時におけるログメッセージの編集処理の場合には、処理の主体はログ編集処理部３２となる。
【００５９】
ログ出力後処理部３３は、取得したテンプレートの先頭から最初のコーテーションマークが検出されるまでのデータを削除する（ステップＳ１８０１ａ）。ログ出力後処理部３３は、削除したコーテーションマークの次の文字を読み込み位置とするとともに、埋め込み文字カウンタＮを１とする（ステップＳ１８０１ｂ）。このとき、ログ出力後処理部３３は、削除したテンプレートの先頭にレコードから取得したタイムスタンプを埋め込む。なお、この例では、テンプレートのデータの削除をコーテーションマークの検出に基づいて行っているが、コーテーションマークに限定されるものではなく、他のマークや目印などであってもよい。
【００６０】
ログ出力後処理部３３は、読み込み位置から１文字を読み込む（ステップＳ１８０２）。ここで取得したテンプレートが、図１４に示すテンプレートのうちのメッセージＩＤがＥ００１のテンプレートの場合、読み込まれる文字は“Ｅ”となる。
【００６１】
ログ出力後処理部３３は、読み込んだ文字が埋込識別子％であるか否かを判断する（ステップＳ１８０３）。読み込んだ文字が埋込識別子％である場合（ステップＳ１８０３でＹｅｓ）、ログ出力後処理部３３は、更に１文字を読み込み（ステップＳ１８０４）、読み込んだ文字がどのような書式指定子であるかを判断する（ステップＳ１８０５）。
【００６２】
ここでは、埋込識別子に続く文字（書式指定子）によってどのような変換を行うかを、例えば図１９に示す埋め込み文字変換テーブルを用いて決めている。例えば、書式指定子が“ｓ”の場合には、埋め込み文字を変換せずにそのまま埋め込む。書式指定子が“ｄ”の場合には、埋め込み文字を１０進数に変換して埋め込む。書式指定子が“ｘ”の場合には、埋め込み文字を１６進数に変換して埋め込む。なお、この例では、３種類の変換の例を挙げているが、数値の桁数を指定するなど、更に高度な編集を行うようにしてもよい。
【００６３】
ログ出力後処理部３３は、書式指定子が“ｓ”の場合、ログメッセージ（テンプレート）にＮ番目の埋め込み文字を連結（埋め込み）する（ステップＳ１８０６）。書式指定子が“ｄ”の場合、ログ出力後処理部３３は、Ｎ番目の埋め込み文字を１０進数に変換し（ステップＳ１８０７）、変換後の文字列をログメッセージに連結する（ステップＳ１８０８）。書式指定子が“ｘ”の場合、ログ出力後処理部３３は、Ｎ番目の埋め込み文字を１６進数に変換し（ステップＳ１８０９）、変換後の文字列をログメッセージに連結する（ステップＳ１８１０）。
【００６４】
連結後、ログ出力後処理部３３は、埋め込み文字カウンタＮを埋め込み文字数に応じてインクリメントする（ステップＳ１８１１）。ログ出力後処理部３３は、テンプレートの読み込み位置の示す文字が最初のコーテーションマークに対応するコーテーションマークであるか否かを判断する（ステップＳ１８１２）。ログ出力後処理部３３は、対応するコーテーションマークの場合（ステップＳ１８１２でＹｅｓ）には、テンプレートの最後の文字に達したと判断し、ステップＳ１８１４においてログメッセージに連結された当該対応するコーテーションマークを削除してログメッセージの編集処理を終了する。一方、対応するコーテーションマークでない場合（ステップＳ１８１２でＮｏ）、読み込み位置をインクリメントする（ステップＳ１８１３）。
【００６５】
一方、ステップＳ１８０３において、読み込んだ文字が埋込識別子でない場合（ステップＳ１８０３でＮｏ）、ログ出力後処理部３３は、ログメッセージに読み込んだ文字を連結する（ステップＳ１８１４）。
【００６６】
次に、上記ログメッセージのマージ処理及びソート処理の具体的な例について図２０を用いて説明する。図２０に示すように、ログ出力後処理部３３は、ログ中間ファイル格納部３７から読み込んだログ中間ファイルと、ログメッセージ格納部３６から取得したテンプレートとに基づいて、ログメッセージを編集する。編集されたログメッセージはバッファに格納（追加）される。
【００６７】
その後、次のレコード（ログ中間ファイル）がないと判断されると、ログ出力後処理部３３は、ログファイル格納部３８から全てのログメッセージ（低負荷時に編集されたログメッセージ）を読み込む。この例では、全てのログメッセージのうちの２つのログメッセージが表記されている。読み込まれた全てのログメッセージは上記バッファにマージ（追加）される。四角い破線で囲まれたものがマージされたログメッセージである。
【００６８】
ログ出力後処理部３３は、バッファに格納されたログメッセージを、例えばタイムスタンプをキーにして、昇順にソートし、ログファイル格納部３８へ出力する。なお、ソートの方法は、タイムスタンプをキーにして行うものに限らず、例えばエラーコードの重要度に応じてソートするようにしてもよい。
【００６９】
上述したようなサーバ２（通信制御プログラム）によれば、ログ出力によるシステムの性能劣化の影響を抑えることができる。
【００７０】
なお、上述した実施の形態では、サーバ２の主な処理をＣＰＵによるソフトウェア処理によって実行するものとして説明したが、この処理の全部又は一部をハードウェアによって実現するようにしてもよい。
【００７１】
また、上述した実施の形態は、上述したものに限定されるものではなく、実施の形態の要旨を逸脱しない範囲において種々の変更を加えることができる。
【符号の説明】
【００７２】
１  通信制御システム
２  サーバ
３  運用監視装置
４  ネットワーク
２０  監視プログラム
２１  監視画面
３０  業務処理部
３１  ログ出力処理部
３２  ログ編集処理部
３３  ログ出力後処理部
３４  業務負荷判定処理部
３５  業務負荷格納部
３６  ログメッセージ格納部
３７  ログ中間ファイル格納部
３８  ログファイル格納部
４１  ＣＰＵ
４２  ＨＤＤ
４３  ＲＡＭ
４４  ＲＯＭ
４５  グラフィック処理装置
４６  入力インタフェース
４７  通信インタフェース
４８  バス
４００  モニタ
４０１  キーボード
４０２  マウス
【図１】
2018028738.tif 000003
【図２】
2018028738.tif 000004
【図３】
2018028738.tif 000005
【図４】
2018028738.tif 000006
【図５】
2018028738.tif 000007
【図６】
2018028738.tif 000008
【図７】
2018028738.tif 000009
【図８】
2018028738.tif 000010
【図９】
2018028738.tif 000011
【図１０】
2018028738.tif 000012
【図１１】
2018028738.tif 000013
【図１２】
2018028738.tif 000014
【図１３】
2018028738.tif 000015
【図１４】
2018028738.tif 000016
【図１５】
2018028738.tif 000017
【図１６】
2018028738.tif 000018
【図１７】
2018028738.tif 000019
【図１８】
2018028738.tif 000020
【図１９】
2018028738.tif 000021
【図２０】
2018028738.tif 000022