(57)【要約】【課題】ログ出力に伴う不整合の発生を抑制することを課題とする。【解決手段】ログ制御装置は、実行が開始された処理に第１のフラグを対応付ける。ログ制御装置は、処理の実行が開始された開始時刻が第１のフラグと対応付けられる第１の基準時刻を超えない場合、第１の基準時刻に対応する第１のログファイルに、前記処理に関するログを出力する。ログ制御装置は、開始時刻が第１の基準時刻を超える場合、第２の基準時刻に対応する第２のログファイルに、ログを出力する。【選択図】図２
2015197690.tif 000002
【特許請求の範囲】
【請求項１】
コンピュータが、
実行が開始された処理に第１のフラグを対応付け、
前記処理の実行が開始された開始時刻が前記第１のフラグと対応付けられる第１の基準時刻を超えない場合、前記第１の基準時刻に対応する第１のログファイルに、前記処理に関するログを出力し、前記開始時刻が前記第１の基準時刻を超える場合、第２の基準時刻に対応する第２のログファイルに、前記ログを出力する
ことを特徴とするログ制御方法。
【請求項２】
前記対応付ける処理は、前記処理が実行された場合に、複数の処理が共通に参照する共有フラグを前記第１のフラグとして前記処理に対応付け、
前記出力する処理は、前記開始時刻が前記第１の基準時刻を超える、かつ、前記開始時刻が前記共有フラグと対応付けられる第３の基準時刻を超えない場合、前記第１のログファイルに前記ログを出力し、前記開始時刻が前記第１の基準時刻を超える、かつ、前記開始時刻が前記第３の基準時刻を超える場合、前記共有フラグを前記第２のフラグで更新することを特徴とする請求項１に記載のログ制御方法。
【請求項３】
前記対応付ける処理は、前記第２のフラグで更新された前記共有フラグを前記第１のフラグとして前記処理に対応付け、
前記出力する処理は、前記第２のフラグに対応付けられる前記第２のログファイルに、前記ログを出力することを特徴とする請求項２に記載のログ制御方法。
【請求項４】
前記出力する処理は、前記開始時刻が前記第３の基準時刻を超える場合、前記共有フラグを前記第２のフラグで更新するまで、他の処理が前記共有フラグを参照することを抑制することを特徴とする請求項２に記載のログ制御方法。
【請求項５】
コンピュータに、
実行が開始された処理に第１のフラグを対応付け、
前記処理の実行が開始された開始時刻が前記第１のフラグと対応付けられる第１の基準時刻を超えない場合、前記第１の基準時刻に対応する第１のログファイルに、前記処理に関するログを出力し、前記開始時刻が前記第１の基準時刻を超える場合、第２の基準時刻に対応する第２のログファイルに、前記ログを出力する
させることを特徴とするログ制御プログラム。
【請求項６】
実行が開始された処理に第１のフラグを対応付ける対応付け部と、
前記処理の実行が開始された開始時刻が前記第１のフラグと対応付けられる第１の基準時刻を超えない場合、前記第１の基準時刻に対応する第１のログファイルに、前記処理に関するログを出力し、前記開始時刻が前記第１の基準時刻を超える場合、第２の基準時刻に対応する第２のログファイルに、前記ログを出力する出力制御部と
を有することを特徴とするログ制御装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ログ制御方法、ログ制御プログラムおよびログ制御装置に関する。
【背景技術】
【０００２】
従来から、情報処理システムでは、障害箇所の特定や障害の復旧に利用するために、システムログやアクセスログなどの各種ログを取得して保持している。例えば、インターネットバンキングのシステムでは、マルチスレッドによって複数ユーザから非同期に開始される各取引についてログを取得する。取得されたログは、取引が正しく行われたことの事後確認や取引状況の分析等に利用される。
【０００３】
インターネットバンキングなどは、１つの取引中の複数タイミングでログが出力される。１つの取引が全て完了してから、該取引に関する複数のログをまとめて出力すると、取引の途中で障害が発生した場合に、該取引に係る複数分のログが記録できなくなる。このため、システム側で取引を途中から復旧させようとしても、どこまで処理が進んだのかわからなくなる恐れがある。そのような事態に陥ることのないように、インターネットバンキングなどでは、取引の途中でログ出力が発生する都度、ログファイルへのログ出力を実行する。
【０００４】
また、インターネットバンキングなどを含む情報処理システムは、その日の処理内容等を正確に把握するために、ログファイルを切り替えて、日毎にログを収集する。例えば、情報処理システムでは、午前０時を境として、スレッドの発生時刻に対応する日付のログファイルに出力する。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２００８−１０２８４７号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
さて、日毎にログの出力先とするログファイルを分けるとして、スレッドがログファイルの切り替えタイミングを跨って実行されていると、ログ出力に不整合が発生する場合があることに発明者らは気づいた。
【０００７】
例えば、３月３日の２３時５９分に実行開始されたスレッドＸが、午前０時を超えても実行され続けている場合でも、スレッドＸは３月３日の処理に該当する。このため、スレッドＸのログは、３月３日のログファイルにログを出力させたい。しかし、スレッドＹが３月４日の０時１分に起動した場合、スレッドＹは３月４日の処理に該当する。このため、スレッドＹは、ログファイルを３月３日用から３月４日用に切り替えて、ログを出力する。
【０００８】
この結果、スレッドＸに関するログを出力しようとした時点で、ログの出力先が４日用のログファイルに切り替えられてしまっている場合がある。すなわち、スレッドＸは、午前０時を超えるまでは３日用のログファイルにログを出力し、午前０時以降は４日用のログファイルにログを出力することになる。このように、上記技術では、日毎にログを管理できない事象が発生する。
【０００９】
１つの側面では、ログ出力に伴う不整合の発生を抑制することができるログ制御方法、ログ制御プログラムおよびログ制御装置を提供することを目的とする。
【課題を解決するための手段】
【００１０】
第１の案では、コンピュータが、実行が開始された処理に第１のフラグを対応付ける。コンピュータが、前記処理の実行が開始された開始時刻が前記第１のフラグと対応付けられる第１の基準時刻を超えない場合、前記第１の基準時刻に対応する第１のログファイルに、前記処理に関するログを出力する。コンピュータが、前記開始時刻が前記第１の基準時刻を超える場合、第２の基準時刻に対応する第２のログファイルに、前記ログを出力する。
【発明の効果】
【００１１】
１実施形態によれば、ログ出力に伴う不整合の発生を抑制することができる。
【図面の簡単な説明】
【００１２】
【図１】図１は、実施例１に係るシステムの全体構成例を示す図である。
【図２】図２は、実施例１に係るログ制御装置の機能構成を示す機能ブロック図である。
【図３】図３は、ローカルフラグテーブルに記憶される情報の例を示す図である。
【図４】図４は、グローバルフラグと切替時刻の遷移を説明する図である。
【図５】図５は、実施例１に係る処理の流れを示すフローチャートである。
【図６】図６は、実施例１に係るマルチスレッドによるログ切替処理の流れを示すシーケンス図である。
【図７】図７は、スレッド追い越し時におけるログ切替処理の流れを示すシーケンス図である。
【図８】図８は、ログ切替前に切替時刻を超過するスレッドが複数発生した時のログ切替処理の流れを示すシーケンス図である。
【図９】図９は、ハードウェア構成例を説明する図である。
【発明を実施するための形態】
【００１３】
以下に、本願の開示するログ制御方法、ログ制御プログラムおよびログ制御装置の実施例を図面に基づいて詳細に説明する。なお、この実施例によりこの発明が限定されるものではない。
【００１４】
図１は、実施例１に係るシステムの全体構成例を示す図である。図１に示すように、このシステムは、一例として、ネットバンキングシステムを図示したが、これに限定されるものではなく、様々な情報処理システムに適用できる。
【００１５】
このシステムは、複数のクライアント端末５と銀行センター１００とを有する。各クライアント端末５と銀行センター１００とは、ネットワーク６を介して接続される。各クライアント端末５は、インターネットなどのネットワーク通信可能な端末であり、例えばパーソナルコンピュータ、携帯端末、スマートフォンである。
【００１６】
銀行センター１００は、ログ制御装置１０と勘定系ホスト５０とを有し、クライアント端末５から受信した各種取引を実行する。勘定系ホスト５０は、ログ制御装置１０を介して、クライアント端末５が要求した取引を受信して実行し、ログ制御装置１０を介して実行結果を応答する。
【００１７】
ログ制御装置１０は、クライアント端末５から受信した各種取引を勘定系ホスト５０に出力し、勘定系ホスト５０から処理結果を受信してクライアント端末５に応答するサーバなどの装置である。このログ制御装置１０は、各種取引や処理に関するログを出力する。
【００１８】
このようなログ制御装置１０は、実行が開始されたスレッドに第１のフラグを対応付ける。そして、ログ制御装置１０は、スレッドの実行が開始された開始時刻が第１のフラグと対応付けられる第１の基準時刻を超えない場合、第１の基準時刻に対応する第１のログファイルに、スレッドに関するログを出力する。一方、ログ制御装置１０は、開始時刻が第１の基準時刻を超える場合、第２の基準時刻に対応する第２のログファイルに、ログを出力する。
【００１９】
例えば、ログ制御装置１０は、スレッドの実行を開始すると、当該スレッドにフラグを設定する。そして、ログ制御装置１０は、フラグに対応する基準時刻とスレッドの開始時刻とを比較し、開始時刻が基準時刻前にあれば、ロガーＡを用いてログファイルＡにログを出力する。一方、ログ制御装置１０は、開始時刻が基準時刻を超えていれば、ロガーＢを用いてログファイルＢにログを出力する。
【００２０】
このように、ログ制御装置１０は、日毎にロガーを切替える際、スレッドの実行開始時に割当てたフラグで決定される時刻で切替判定するので、スレッドが日を跨いで実行されても、実行開始時の時刻で判定でき、同日ファイルにログ出力できる。したがって、ログ制御装置１０は、ログ出力に伴う不整合の発生を抑制することができる。
【００２１】
図２は、実施例１に係るログ制御装置の機能構成を示す機能ブロック図である。図２に示すように、ログ制御装置１０は、通信制御部１１、記憶部１２、制御部２０を有する。
【００２２】
通信制御部１１は、他の装置の通信を制御する処理部であり、例えばネットワークインタフェースカードなどである。例えば、通信制御部１１は、クライアント端末５から取引などの要求を受信し、取引結果などを送信する。
【００２３】
記憶部１２は、各種プログラムやデータを記憶するハードディスクや半導体メモリなどの記憶装置であり、ローカルフラグテーブル１３、グローバルフラグテーブル１４、切替時刻テーブル１５、ログファイルＡ１６、ログファイルＢ１７を記憶する。
【００２４】
ローカルフラグテーブル１３は、スレッドごとに、スレッドに割当てたローカルフラグの値を記憶する。図３は、ローカルフラグテーブルに記憶される情報の例を示す図である。図３に示すように、ローカルフラグテーブル１３は、「スレッド名、フラグ」を対応付けて記憶する。
【００２５】
「スレッド名」は、スレッドを特定する情報であり、例えばスレッドの名称などが設定される。フラグは、ローカルフラグの値が設定される。図３では、スレッド１にはフラグＡが対応付けられており、スレッド２にはフラグＢが対応付けられている例を示している。
【００２６】
グローバルフラグテーブル１４は、各スレッドが共通に参照する共有フラグであるグローバルフラグの値を記憶する。例えば、グローバルフラグテーブル１４は、「グローバルフラグ、フラグＡ」などを記憶する。
【００２７】
切替時刻テーブル１５は、ログファイルを切替えるタイミングを示す各切替時刻の値を記憶する。例えば、切替時刻テーブル１５は、フラグＡに対応する切替時刻Ａを「２０１３年１１月２２日１２：００」と記憶し、フラグＢに対応する切替時刻Ｂを「２０１３年１１月２３日１２：００」と記憶する。
【００２８】
ログファイルＡ１６は、ロガーＡの出力先となるログファイルであり、日毎にログを記憶する。例えば、ログファイルＡ１６は、奇数日に実行されたスレッドのログを日毎に記憶する。ログファイルＢ１７は、ロガーＢの出力先となるログファイルであり、日毎にログを記憶する。例えば、ログファイルＢ１７は、偶数日に実行されたスレッドのログを日毎に記憶する。
【００２９】
制御部２０は、ログ制御装置１０全体を司る処理日であり、例えばプロセッサなどである。この制御部２０は、スレッド実行部２１、ローカル処理部２２、グローバル比較部２３、更新部２４、ログ出力部２５を有する。なお、これらの処理部は、電子回路の一部やプロセッサが実行するプロセスの一部である。
【００３０】
スレッド実行部２１は、スレッドを実行する処理部である。具体的には、スレッド実行部２１は、クライアント端末５から各種取引などの要求を受信すると、当該要求に対応するスレッドを実行する。
【００３１】
ローカル処理部２２は、ローカル設定部２２ａとローカル比較部２２ｂとを有し、これらによってローカルフラグを用いた各種処理を実行する処理部である。
【００３２】
ローカル設定部２２ａは、実行が開始されたスレッドにローカルフラグを設定する処理部である。具体的には、ローカル設定部２２ａは、スレッドが開始されると、グローバルフラグテーブル１４からグローバルフラグの値を取得する。そして、ローカル設定部２２ａは、実行されたスレッドの名称と、グローバルフラグの値が設定されたローカルフラグとを対応付けて、ローカルフラグテーブル１３に格納する。なお、ローカル設定部２２ａは、対応付け部の一例である。
【００３３】
ローカル比較部２２ｂは、スレッドの開始時刻と、ローカルフラグに対応付けられる切替時刻とを比較する処理部である。例えば、ローカル比較部２２ｂは、スレッド１と対応付けられるローカルフラグ「フラグＡ」をローカルフラグテーブル１３から特定する。そして、ローカル比較部２２ｂは、スレッド１の開始時刻と、フラグＡに対応する切替時刻Ａとを比較する。
【００３４】
比較した結果、ローカル比較部２２ｂは、スレッド１の開始時刻が切替時刻Ａ以内であれば、ログ出力部２５に対して、スレッド１のログをロガーＡで出力することを指示する。一方、ローカル比較部２２ｂは、スレッド１の開始時刻が切替時刻Ａ以降であれば、グローバル比較部２３に対して、スレッド１に対するグローバルフラグによる切替判定の処理を依頼する。
【００３５】
グローバル比較部２３は、グローバルアドレスに対応する切替時刻と、スレッドの開始時刻とを比較する処理部である。具体的には、グローバル比較部２３は、ローカルフラグを用いた切替判定によって切替時刻を超過すると判定されたスレッドに対して、グローバルアドレスを用いた切替判定を実行する。
【００３６】
例えば、グローバル比較部２３は、スレッド１についてグローバルフラグによる切替判定の処理依頼を受信すると、グローバルフラグテーブル１４からグローバルフラグ「フラグＡ」を取得する。そして、グローバル比較部２３は、スレッド１の開始時刻と、フラグＡに対応する切替時刻Ａとを比較する。
【００３７】
比較した結果、グローバル比較部２３は、スレッド１の開始時刻が切替時刻Ａ以内であれば、ログ出力部２５に対して、切替時刻Ａに対応するロガーＡでスレッド１のログを出力することを指示する。
【００３８】
一方で、グローバル比較部２３は、スレッド１の開始時刻が切替時刻Ａ以降であれば、更新部２４に対して、グローバルフラグの更新を依頼する。さらに、グローバル比較部２３は、更新部２４に対して、他方の切替時刻Ｂの更新を依頼する。
【００３９】
ここで、グローバル比較部２３がグローバルフラグを用いた比較処理を実行するのは、グローバルフラグが他のスレッドによって更新されていないかを検出するためのものである。このような判定を行うことで、グローバルフラグが複数のスレッドによって同タイミングで別々に更新されることを抑制する。
【００４０】
更新部２４は、ローカルフラグ、グローバルフラグ、切替時刻を更新する処理部である。具体的には、更新部２４は、グローバルフラグによる切替判定によって切替時刻を超過すると判定された場合、グローバルフラグおよび切替時刻を更新し、ロガーを切替えることで、ログファイルを切替える。
【００４１】
例えば、更新部２４は、グローバル比較部２３から切替時刻Ｂの更新依頼を受信すると、切替時刻Ｂを切替時刻Ａの２４時間後に変更する。また、更新部２４は、切替時刻Ｂを更新した場合、グローバルフラグテーブル１４に記憶されるグローバルフラグ「フラグＡ」を、切替時刻Ｂに対応する「フラグＢ」に更新する。さらに、更新部２４は、グローバルフラグによる判定契機となったスレッドのローカルフラグ「フラグＡ」を、更新後のグローバルフラグの値「フラグＢ」に更新する。
【００４２】
図４を用いて一例を説明する。図４は、グローバルフラグと切替時刻の遷移を説明する図である。図４に示すように、更新部２４は、スレッド１の開始時刻が切替時刻Ａ「２０１３年１１月２２日１２：００」を超過すると判定された場合、切替時刻Ｂを切替時刻Ａの２４時間後である「２０１３年１１月２３日１２：００」に更新する。さらに、更新部２４は、グローバルフラグの値を、更新した切替時刻Ｂに対応するフラグＢに更新する。この結果、切替時刻更新後に発生するスレッドのログは、切替時刻Ｂを用いて切替判定される。
【００４３】
ログ出力部２５は、切替時刻ごとのロガーを用いてログ出力を実行する処理部である。なお、ログ出力部２５は、出力制御部の一例である。具体的には、ログ出力部２５は、日毎に２つのログファイルを切替えてログ出力を実行する。
【００４４】
例えば、ログ出力部２５は、切替時刻Ａ以内であればロガーＡを用いて、ログファイルＡ１６にログを出力する。また、ログ出力部２５は、切替時刻Ｂ以内であればロガーＢを用いて、ログファイルＢ１７にログを出力する。なお、ログ出力部２５は、各ログファイル内で日毎に領域を分けてログ出力する。
【００４５】
次に、ログ制御装置１０が実行する処理の流れを説明する。ここでは、具体的な数値例を挙げて説明するが、あくまで一例であり、任意に変更することができる。
【００４６】
図５は、実施例１に係る処理の流れを示すフローチャートである。図５に示すように、スレッドの実行が開始されると（Ｓ１０１：Ｙｅｓ）、ローカル設定部２２ａは、グローバルフラグテーブル１４からグローバルフラグを取得し（Ｓ１０２）、取得したグローバルフラグを実行スレッドのローカルフラグに設定する（Ｓ１０３）。続いて、ローカル設定部２２ａは、システム情報等から開始時刻を取得する（Ｓ１０４）。
【００４７】
その後、ローカル比較部２２ｂは、対象スレッドの開始時刻がローカルフラグに対応する切替時刻を超過するかを判定する（Ｓ１０５）。ここで、ローカル比較部２２ｂは、対象スレッドの開始時刻がローカルフラグに対応する切替時刻を超過しない場合（Ｓ１０５：Ｎｏ）、ログ出力部２５は、実行スレッドのログを、ローカルフラグに対応するロガーで出力する（Ｓ１０６）。
【００４８】
一方、対象スレッドの開始時刻がローカルフラグに対応する切替時刻を超過する場合（Ｓ１０５：Ｙｅｓ）、グローバル比較部２３は、グローバルフラグテーブル１４からグローバルフラグを取得する（Ｓ１０７）。
【００４９】
続いて、グローバル比較部２３は、対象スレッドの開始時刻がグローバルフラグに対応する切替時刻を超過するかを判定する（Ｓ１０８）。ここで、グローバル比較部２３は、対象スレッドの開始時刻がグローバルフラグに対応する切替時刻を超過しない場合（Ｓ１０８：Ｎｏ）、ログ出力部２５は、対象スレッドのログを、ローカルフラグに対応するロガーで出力する（Ｓ１０６）。
【００５０】
一方、対象スレッドの開始時刻がグローバルフラグに対応する切替時刻を超過する場合（Ｓ１０８：Ｙｅｓ）、更新部２４は、もう一方の切替時刻を１日後（２４時間後）に更新する（Ｓ１０９）。
【００５１】
さらに、更新部２４は、ログ出力部２５に対してロガーの更新を指示し（Ｓ１１０）、グローバルフラグテーブル１４のグローバルフラグを、更新した切替時刻に対応するフラグに更新する（Ｓ１１１）。
【００５２】
その後、更新部２４は、対象スレッドのローカルフラグを、更新した切替時刻に対応するフラグに更新し（Ｓ１１２）、ログ出力部２５は、対象スレッドのログを、更新後のローカルフラグに対応するロガーで出力する（Ｓ１０６）。
【００５３】
図６は、実施例１に係るマルチスレッドによるログ切替処理の流れを示すシーケンス図である。図６に示すように、スレッド実行部２１は、２０１３年１１月２２日１１時５９分にスレッド２の実行を開始する（Ｓ２０１）。
【００５４】
続いて、ローカル設定部２２ａは、グローバルフラグテーブル１４からグローバルフラグに設定される「フラグＡ」を取得し（Ｓ２０２とＳ２０３）、スレッド２のローカルフラグ２に設定する（Ｓ２０４とＳ２０５）。
【００５５】
そして、ローカル比較部２２ｂは、ローカルフラグ２に設定される「フラグＡ」に対応する切替時刻Ａ「２０１３年１１月２２日１２時００分」と、スレッド２の開始時刻「２０１３年１１月２２日１１時５９分」とを比較する（Ｓ２０６）。ここで、ローカル設定部２２ａは、開始時刻が切替時刻Ａを超過しないと判定する（Ｓ２０７）。
【００５６】
この結果、ログ出力部２５は、スレッド２が出力するログを、ローカルフラグ２に設定される「フラグＡ」に対応するロガーＡを用いてログファイルＡに出力し（Ｓ２０８とＳ２０９）、出力結果をクライアント端末５や管理装置に応答する（Ｓ２１０）。
【００５７】
その後、スレッド実行部２１は、２０１３年１１月２２日１２時０１分にスレッド１の実行を開始する（Ｓ２１１）。すると、ローカル設定部２２ａは、グローバルフラグに設定される「フラグＡ」を取得し（Ｓ２１２とＳ２１３）、スレッド１のローカルフラグ１に設定する（Ｓ２１４とＳ２１５）。
【００５８】
そして、ローカル比較部２２ｂは、ローカルフラグ１に設定される「フラグＡ」に対応する切替時刻Ａ「２０１３年１１月２２日１２時００分」と、スレッド１の開始時刻「２０１３年１１月２２日１２時０１分」とを比較する（Ｓ２１６）。ここで、ローカル比較部２２ｂは、開始時刻が切替時刻Ａを超過すると判定する（Ｓ２１７）。このとき、グローバル比較部２３および更新部２４は、グローバルフラグに関する各種処理の排他制御を開始する。
【００５９】
グローバル比較部２３は、グローバルフラグテーブル１４からグローバルフラグに設定される「フラグＡ」を取得する（Ｓ２１８とＳ２１９）。続いて、グローバル比較部２３は、グローバルフラグに設定される「フラグＡ」に対応する切替時刻Ａ「２０１３年１１月２２日１２時００分」と、スレッド１の開始時刻「２０１３年１１月２２日１２時０１分」とを比較する（Ｓ２２０）。ここで、グローバル比較部２３は、開始時刻が切替時刻Ａを超過すると判定する（Ｓ２２１）。
【００６０】
この結果、更新部２４は、判定に利用された切替時刻Ａと異なるもう一方の切替時刻Ｂを切替時刻Ａの２４時間後である「２０１３年１１月２３日１２時００分」に更新する（Ｓ２２２とＳ２２３）。続いて、更新部２４は、更新した切替時刻Ｂに対応するロガーＢへの切替指示をログ出力部２５に出力する（Ｓ２２４とＳ２２５）。
【００６１】
その後、更新部２４は、グローバルフラグテーブル１４に設定されるグローバルフラグを、時刻を更新した切替時刻Ｂに対応する「フラグＢ」に更新する（Ｓ２２６とＳ２２７）。このとき、グローバル比較部２３および更新部２４は、グローバルフラグに関する各種処理の排他制御を解除する。さらに、更新部２４は、スレッド１のローカルフラグ１に対しても、グローバルフラグに設定された「フラグＢ」を設定する（Ｓ２２８とＳ２２９）。
【００６２】
この結果、ログ出力部２５は、スレッド１が出力するログを、ローカルフラグ１に設定される「フラグＢ」に対応するロガーＢを用いてログファイルＢに出力し（Ｓ２３０とＳ２３１）、出力結果をクライアント端末５や管理装置に応答する（Ｓ２３２）。
【００６３】
その後、スレッド実行部２１は、２０１３年１１月２２日１２時０２分にスレッド２の実行を再度開始する（Ｓ２３３）。すると、ローカル設定部２２ａは、グローバルフラグテーブル１４に設定されるグローバルフラグ「フラグＢ」を取得し（Ｓ２３４とＳ２３５）、スレッド２のローカルフラグ２に設定する（Ｓ２３６とＳ２３７）。
【００６４】
そして、ローカル比較部２２ｂは、ローカルフラグ２に設定される「フラグＢ」に対応する切替時刻Ｂ「２０１３年１１月２３日１２時００分」と、スレッド２の開始時刻「２０１３年１１月２２日１２時０２分」とを比較する（Ｓ２３８）。ここで、ローカル設定部２２ａは、開始時刻が切替時刻Ｂを超過しないと判定する（Ｓ２３９）。
【００６５】
この結果、ログ出力部２５は、新たに実行されたスレッド２が出力するログを、ローカルフラグ２の「フラグＢ」に対応するロガーＢを用いてログファイルＢに出力し（Ｓ２４０とＳ２４１）、出力結果をクライアント端末５や管理装置に応答する（Ｓ２４２）。
【００６６】
図７は、スレッド追い越し時におけるログ切替処理の流れを示すシーケンス図である。図７に示すように、スレッド実行部２１は、２０１３年１１月２２日１１時５９分にスレッド１の実行を開始する（Ｓ３０１）。
【００６７】
続いて、ローカル設定部２２ａは、グローバルフラグテーブル１４からグローバルフラグに設定される「フラグＡ」を取得し（Ｓ３０２とＳ３０３）、スレッド１のローカルフラグ１に設定する（Ｓ３０４とＳ３０５）。
【００６８】
そして、ローカル比較部２２ｂは、ローカルフラグ１に設定される「フラグＡ」に対応する切替時刻Ａ「２０１３年１１月２２日１２時００分」と、スレッド１の開始時刻「２０１３年１１月２２日１１時５９分」とを比較する（Ｓ３０６）。ここで、ローカル設定部２２ａは、開始時刻が切替時刻Ａを超過しないと判定する（Ｓ３０７）。
【００６９】
この結果、ログ出力部２５は、スレッド１が出力するログを、ローカルフラグ１に設定される「フラグＡ」に対応するロガーＡを用いてログファイルＡに出力し（Ｓ３０８とＳ３０９）、出力結果をクライアント端末５や管理装置に応答する。
【００７０】
その後、スレッド実行部２１は、２０１３年１１月２２日１１時５９分にスレッド２の実行を開始する（Ｓ３１０）。すると、ローカル設定部２２ａは、グローバルフラグに設定される「フラグＡ」を取得する（Ｓ３１１とＳ３１２）。
【００７１】
一方で、スレッド実行部２１は、２０１３年１１月２２日１２時０１分にスレッド１の実行を開始する（Ｓ３１３）。すると、ローカル設定部２２ａは、グローバルフラグに設定される「フラグＡ」を取得する（Ｓ３１４とＳ３１５）。
【００７２】
そして、ローカル設定部２２ａは、スレッド２に対して、スレッド２のローカルフラグ２に、グローバルフラグの「フラグＡ」を設定する（Ｓ３１６とＳ３１７）。同様に、ローカル設定部２２ａは、スレッド１に対して、スレッド１のローカルフラグ１に、グローバルフラグの「フラグＡ」を設定する（Ｓ３１８とＳ３１９）。
【００７３】
続いて、ローカル比較部２２ｂは、スレッド１のローカルフラグ１に設定される「フラグＡ」に対応する切替時刻Ａ「２０１３年１１月２２日１２時００分」と、スレッド１の開始時刻「２０１３年１１月２２日１２時０１分」とを比較する（Ｓ３２０）。ここで、ローカル比較部２２ｂは、開始時刻が切替時刻Ａを超過すると判定する（Ｓ３２１）。このとき、グローバル比較部２３および更新部２４は、グローバルフラグに関する各種処理を排他制御を開始する。
【００７４】
そして、切替時間を超過するスレッド１について、グローバル比較部２３は、グローバルフラグテーブル１４からグローバルフラグに設定される「フラグＡ」を取得する（Ｓ３２２とＳ３２３）。続いて、グローバル比較部２３は、グローバルフラグの「フラグＡ」に対応する切替時刻Ａ「２０１３年１１月２２日１２時００分」と、スレッド１の開始時刻「２０１３年１１月２２日１２時０１分」とを比較する（Ｓ３２４）。ここで、グローバル比較部２３は、開始時刻が切替時刻Ａを超過すると判定する（Ｓ３２５）。
【００７５】
この結果、更新部２４は、判定に利用された切替時刻Ａと異なるもう一方の切替時刻Ｂを切替時刻Ａの２４時間後である「２０１３年１１月２３日１２時００分」に更新する（Ｓ３２６とＳ３２７）。続いて、更新部２４は、更新した切替時刻Ｂに対応するロガーＢへの切替指示をログ出力部２５に出力する（Ｓ３２８とＳ３２９）。
【００７６】
その後、更新部２４は、グローバルフラグテーブル１４に設定されるグローバルフラグを、時刻を更新した切替時刻Ｂに対応する「フラグＢ」に更新する（Ｓ３３０とＳ３３１）。このとき、グローバル比較部２３および更新部２４は、グローバルフラグに関する各種処理の排他制御を解除する。
【００７７】
一方で、切替時間を超過しないスレッド２について、Ｓ３３２を実行する。すなわち、ローカル比較部２２ｂは、Ｓ３１０で起動されたスレッド２のローカルフラグ２の「フラグＡ」に対応する切替時刻Ａ「２０１３年１１月２２日１２時００分」と、スレッド２の開始時刻「２０１３年１１月２２日１１時５９分」とを比較する。ここで、ローカル設定部２２ａは、開始時刻が切替時刻Ａを超過しないと判定する（Ｓ３３３）。
【００７８】
その一方で、切替時間を超過したスレッド１について、更新部２４は、スレッド１の切替処理において、グローバルフラグテーブル１４に設定したグローバルフラグの値「フラグＢ」を、スレッド１のローカルフラグ１に設定する（Ｓ３３４とＳ３３５）。なお、スレッド１の切替処理とは、例えば排他制御期間であり、上記Ｓ３２２からＳ３３１の処理期間である。この結果、ログ出力部２５は、スレッド１が出力するログを、スレッド１のローカルフラグ１に設定される「フラグＢ」に対応するロガーＢを用いてログファイルＢに出力し（Ｓ３３６とＳ３３７）、出力結果をクライアント端末５や管理装置に応答する（Ｓ３３８）。
【００７９】
また、Ｓ３２０において切替時間を超過しないスレッド２については、ログ出力部２５は、スレッド２のローカルフラグ２の「フラグＡ」に対応するロガーＡを用いてログファイルＡに出力する（Ｓ３３９とＳ３４０）。そして、ログ出力部２５は、出力結果をクライアント端末５や管理装置に応答する（Ｓ３４１）。
【００８０】
その後、スレッド実行部２１は、２０１３年１１月２２日１２時０２分にスレッド１の実行を再度開始する（Ｓ３４２）。すると、ローカル設定部２２ａは、グローバルフラグテーブル１４からグローバルフラグに設定される「フラグＢ」を取得し（Ｓ３４３とＳ３４４）、スレッド１のローカルフラグ１に設定する（Ｓ３４５とＳ３４６）。
【００８１】
そして、ローカル比較部２２ｂは、ローカルフラグ１の「フラグＢ」に対応する切替時刻Ｂ「２０１３年１１月２３日１２時００分」と、スレッド１の開始時刻「２０１３年１１月２２日１２時０２分」とを比較する（Ｓ３４７）。ここで、ローカル設定部２２ａは、開始時刻が切替時刻Ｂを超過しないと判定する（Ｓ３４８）。
【００８２】
この結果、ログ出力部２５は、新たに実行されたスレッド１が出力するログを、ローカルフラグ１の「フラグＢ」に対応するロガーＢを用いてログファイルＢに出力し（Ｓ３４９とＳ３５０）、出力結果をクライアント端末５や管理装置に応答する（Ｓ３５１）。
【００８３】
図８は、ログ切替前に切替時刻を超過するスレッドが複数発生した時のログ切替処理の流れを示すシーケンス図である。図８に示すように、スレッド実行部２１は、２０１３年１１月２２日１１時５９分にスレッド２の実行を開始する（Ｓ４０１）。
【００８４】
続いて、ローカル設定部２２ａは、グローバルフラグテーブル１４に設定されるグローバルフラグ「フラグＡ」を取得し（Ｓ４０２とＳ４０３）、スレッド２のローカルフラグ２に設定する（Ｓ４０４とＳ４０５）。
【００８５】
そして、ローカル比較部２２ｂは、ローカルフラグ２の「フラグＡ」に対応する切替時刻Ａ「２０１３年１１月２２日１２時００分」と、スレッド２の開始時刻「２０１３年１１月２２日１１時５９分」とを比較する（Ｓ４０６）。ここで、ローカル設定部２２ａは、開始時刻が切替時刻Ａを超過しないと判定する（Ｓ４０７）。
【００８６】
この結果、ログ出力部２５は、スレッド２が出力するログを、ローカルフラグ２の「フラグＡ」に対応するロガーＡを用いてログファイルＡに出力し（Ｓ４０８とＳ４０９）、出力結果をクライアント端末５や管理装置に応答する。
【００８７】
その後、スレッド実行部２１は、２０１３年１１月２２日１２時０１分にスレッド１の実行を開始し（Ｓ４１０）、２０１３年１１月２２日１２時０２分にスレッド２の実行を開始する（Ｓ４１１）。
【００８８】
続いて、ローカル設定部２２ａは、スレッド１に対して、グローバルフラグに設定される「フラグＡ」を取得し（Ｓ４１２とＳ４１３）、同様に、スレッド２に対して、グローバルフラグに設定される「フラグＡ」を取得する（Ｓ４１４とＳ４１５）。
【００８９】
そして、ローカル設定部２２ａは、スレッド１に対して、スレッド１のローカルフラグ１に、グローバルフラグの「フラグＡ」を設定する（Ｓ４１６とＳ４１７）。同様に、ローカル設定部２２ａは、スレッド２に対して、スレッド２のローカルフラグ２に、グローバルフラグの「フラグＡ」を設定する（Ｓ４１８とＳ４１９）。
【００９０】
その後、スレッド１に対して、ローカル比較部２２ｂは、Ｓ４２０を実行する。すなわち、ローカル比較部２２ｂは、スレッド１のローカルフラグ１の「フラグＡ」に対応する切替時刻Ａ「２０１３年１１月２２日１２時００分」と、スレッド１の開始時刻「２０１３年１１月２２日１２時０１分」とを比較する。ここで、ローカル比較部２２ｂは、スレッド１に対して、開始時刻が切替時刻Ａを超過すると判定する（Ｓ４２１）。
【００９１】
同様に、スレッド２に対して、ローカル比較部２２ｂは、Ｓ４２２を実行する。すなわち、ローカル比較部２２ｂは、スレッド２のローカルフラグ１の「フラグＡ」に対応する切替時刻Ａ「２０１３年１１月２２日１２時００分」と、スレッド２の開始時刻「２０１３年１１月２２日１２時０２分」とを比較する。ここで、ローカル比較部２２ｂは、スレッド２に対して、開始時刻が切替時刻Ａを超過すると判定する（Ｓ４２３）
【００９２】
ここで、グローバル比較部２３および更新部２４は、スレッド１に対するグローバルフラグに関する各種処理の排他制御を開始して、各フラグの更新処理を実行する。ここでは、以下に示すように、スレッド１がスレッド２よりも先に、起動していることから、スレッド１に対して処理の実行を許容し、スレッド２に対する処理を抑制する。
【００９３】
具体的には、切替時間を超過するスレッド１について、グローバル比較部２３は、グローバルフラグテーブル１４からグローバルフラグに設定される「フラグＡ」を取得する（Ｓ４２４とＳ４２５）。続いて、グローバル比較部２３は、グローバルフラグの「フラグＡ」に対応する切替時刻Ａ「２０１３年１１月２２日１２時００分」と、スレッド１の開始時刻「２０１３年１１月２２日１２時０１分」とを比較する（Ｓ４２６）。ここで、グローバル比較部２３は、開始時刻が切替時刻Ａを超過すると判定する（Ｓ４２７）。
【００９４】
この結果、更新部２４は、判定に利用された切替時刻Ａとは異なるもう一方の切替時刻Ｂを切替時刻Ａの２４時間後である「２０１３年１１月２３日１２時００分」に更新する（Ｓ４２８とＳ４２９）。続いて、更新部２４は、更新した切替時刻Ｂに対応するロガーＢへの切替指示をログ出力部２５に出力する（Ｓ４３０とＳ４３１）。
【００９５】
その後、更新部２４は、グローバルフラグテーブル１４に設定されるグローバルフラグを、時刻を更新した切替時刻Ｂに対応する「フラグＢ」に更新する（Ｓ４３２とＳ４３３）。このとき、グローバル比較部２３および更新部２４は、グローバルフラグに関する各種処理の排他制御を解除する。
【００９６】
スレッド１の排他制御が解除されると、スレッド１と同様に切替時間を超過するスレッド２について、グローバル比較部２３は、グローバルフラグテーブル１４からグローバルフラグに設定される「フラグＢ」を取得する（Ｓ４３４とＳ４３５）。
【００９７】
続いて、グローバル比較部２３は、グローバルフラグの「フラグＢ」に対応する切替時刻Ｂ「２０１３年１１月２３日１２時００分」と、スレッド１の開始時刻「２０１３年１１月２２日１２時０１分」とを比較する（Ｓ４３６）。ここで、グローバル比較部２３は、スレッド２の開始時刻が切替時刻Ｂを超過しないと判定する（Ｓ４３７）。なお、Ｓ４３４からＳ４３７の期間は、排他制御されるので、グローバルフラグへの更新は、スレッド２に関する処理でしか行われない。
【００９８】
その後、スレッド１について、更新部２４は、グローバルフラグテーブル１４においてグローバルフラグに設定される「フラグＢ」を、スレッド１のローカルフラグ１に設定する（Ｓ４３８とＳ４３９）。
【００９９】
同様に、スレッド２について、更新部２４は、Ｓ５３５で取得されたグローバルフラグの「フラグＢ」を、スレッド２のローカルフラグ２に設定する（Ｓ４４０とＳ４４１）。
【０１００】
そして、ログ出力部２５は、スレッド１が出力するログを、スレッド１のローカルフラグ１の「フラグＢ」に対応するロガーＢを用いてログファイルＢに出力し（Ｓ４４２とＳ４４３）、出力結果をクライアント端末５や管理装置に応答する（Ｓ４４４）。
【０１０１】
同様に、ログ出力部２５は、スレッド２が出力するログを、スレッド２のローカルフラグ２の「フラグＢ」に対応するロガーＢを用いてログファイルＢに出力し（Ｓ４４５とＳ４４６）、出力結果をクライアント端末５や管理装置に応答する（Ｓ４４７）。
【０１０２】
その後、スレッド実行部２１は、２０１３年１１月２２日１２時０３分にスレッド１の実行を再度開始する（Ｓ４４８）。すると、ローカル設定部２２ａは、グローバルフラグテーブル１４からグローバルフラグに設定される「フラグＢ」を取得し（Ｓ４４９とＳ４５０）、スレッド１のローカルフラグ１に設定する（Ｓ４５１とＳ４５２）。
【０１０３】
そして、ローカル比較部２２ｂは、ローカルフラグ１の「フラグＢ」に対応する切替時刻Ｂ「２０１３年１１月２３日１２時００分」と、スレッド１の開始時刻「２０１３年１１月２２日１２時０３分」とを比較する（Ｓ４５３）。ここで、ローカル設定部２２ａは、開始時刻が切替時刻Ｂを超過しないと判定する（Ｓ４５４）。
【０１０４】
この結果、ログ出力部２５は、新たに実行されたスレッド１が出力するログを、ローカルフラグ１の「フラグＢ」に対応するロガーＢを用いてログファイルＢに出力し（Ｓ４５５とＳ４５６）、出力結果をクライアント端末５や管理装置に応答する（Ｓ４５７）。
【０１０５】
ログ制御装置１０は、基準時刻毎にロガーを切替える際に、スレッドの実行時に割当てたフラグで決定される基準時刻で切替判定するので、１つのスレッドに対して同じ基準時刻で切替判定ができる。したがって、ログ制御装置１０は、ログ出力に伴う不整合の発生を抑制することができる。
【０１０６】
ここで、ログ出力に伴う不整合の発生を抑制する方法としては、先に実行されたスレッドの実行が完了するまで、ログファイルのアクセスを排他制御することで、ログファイルの切り替えを抑制することも考えられる。しかし、先に実行されたスレッドの数が多い場合や先に実行開始されたスレッドが長時間終了しない場合、ログファイルが長時間排他制御されるので、システム全体の性能劣化につながる。
【０１０７】
これに対して、ログ制御装置１０は、複数の切替時刻と、各切替時刻に対応するロガーと、いずれの切替時刻およびロガーを用いるかを決定する各フラグとを用いることで、ログファイルが排他される時間を抑制できる。
【０１０８】
具体的には、図７で説明したように、ログ制御装置１０は、切替時刻Ａ以前に発生したスレッド１に対しては、切替時刻Ａを超過して実行され続けても、切替時刻Ａに対応するログファイルＡにログ出力を実行できる。その一方で、ログ制御装置１０は、切替時刻Ａ以降かつスレッド１の実行中にスレッド２が発生した場合、スレッド１の処理を待たずに、ログファイルを切替えることができる。
【０１０９】
このように、ログ制御装置１０は、切替時刻以前のスレッドと、切替時刻以降のスレッドとを並行にログ出力させることができるので、従来に比べて、排他時間を抑制できる。また、ログ制御装置１０は、図７で説明したスレッドの追い越しが切替時刻を跨って発生しても、それぞれのスレッドのログを適切なログファイルに出力させることができる。
【０１１０】
また、図８で説明したように、ログ制御装置１０は、切替時刻を超過するスレッドが複数発生した場合には、グローバルフラグの変更を一方のスレッドに実行させることで、グローバルフラグを複数回更新されることを抑制できる。この結果、ログ制御装置１０は、不要なログファイルの切り替えを抑制することができ、ログ出力に伴う不整合の発生を抑制することができる。
【０１１１】
さて、これまで本発明の実施例について説明したが、本発明は上述した実施例以外にも、種々の異なる形態にて実施されてよいものである。
【０１１２】
上記実施例では、取引のログを取得するシステムを用いて説明したが、これに限定されるものではなく、ログ制御装置は、ログを取得するシステムであれば、どのようなシステムに適用することができる。
【０１１３】
また、上記実施例で説明したログファイルを切替える時刻等は例示であり、任意に設定変更することができる。また、上記実施例では、切替時刻を２つ用いる例を説明したが、これに限定されるものではなく、３つ以上を用いることもできる。その場合、スレッドの起動時刻が切替時刻Ｐを超える場合、切替時刻Ｐ以外の切替時刻のうち、切替時刻Ｐに最も近い切替時刻Ｌの時刻を変更する。
【０１１４】
また、本実施例において説明した各処理のうち、自動的におこなわれるものとして説明した処理の全部または一部を手動的におこなうこともできる。あるいは、手動的におこなわれるものとして説明した処理の全部または一部を公知の方法で自動的におこなうこともできる。この他、上記文書中や図面中で示した処理手順、制御手順、具体的名称、各種のデータやパラメータを含む情報については、特記する場合を除いて任意に変更することができる。
【０１１５】
また、図示した各装置の各構成要素は機能概念的なものであり、必ずしも物理的に図示の如く構成されていることを要しない。すなわち、各装置の分散や統合の具体的形態は図示のものに限られない。つまり、その全部または一部を、各種の負荷や使用状況などに応じて、任意の単位で機能的または物理的に分散・統合して構成することができる。さらに、各装置にて行なわれる各処理機能は、その全部または任意の一部が、ＣＰＵおよび当該ＣＰＵにて解析実行されるプログラムにて実現され、あるいは、ワイヤードロジックによるハードウェアとして実現され得る。
【０１１６】
図９は、ハードウェア構成例を説明する図である。図９に示すように、ログ制御装置１０は、ＨＤＤ（Hard  Disk  Drive）１０ａ、通信インタフェース１０ｂ、メモリ１０ｃ、ＣＰＵ（Central  Processing  Unit）１０ｄを有する。また、図９に示した各部は、バス等で相互に接続される。
【０１１７】
ＨＤＤ１０ａは、図２等に示した機能を動作させるプログラム、ＤＢ、テーブルを記憶する。通信インタフェース１０ｂは、他の装置との通信を制御するインタフェースであり、例えばネットワークインタフェースカードである。
【０１１８】
ＣＰＵ１０ｄは、図２等に示した各処理部と同様の処理を実行するプログラムをＨＤＤ１０ｂ等から読み出してメモリ１０ｃに展開することで、図２等で説明した各機能を実行するプロセスを動作させる。
【０１１９】
すなわち、このプロセスは、ログ制御装置１０が有する各処理部と同様の機能を実行する。具体的には、ＣＰＵ１０ｄは、スレッド実行部２１、ローカル処理部２２、グローバル比較部２３、更新部２４、ログ出力部２５等と同様の機能を有するプログラムをＨＤＤ１０ａ等から読み出す。そして、ＣＰＵ１０ｄは、スレッド実行部２１、ローカル処理部２２、グローバル比較部２３、更新部２４、ログ出力部２５と同様の処理を実行するプロセスを実行する。
【０１２０】
このようにログ制御装置１０は、プログラムを読み出して実行することで検証方法を実行する情報処理装置として動作する。また、ログ制御装置１０は、媒体読取装置によって記録媒体から上記プログラムを読み出し、読み出された上記プログラムを実行することで上記した実施例と同様の機能を実現することもできる。なお、この他の実施例でいうプログラムは、ログ制御装置１０によって実行されることに限定されるものではない。例えば、他のコンピュータまたはサーバがプログラムを実行する場合や、これらが協働してプログラムを実行するような場合にも、本発明を同様に適用することができる。
【符号の説明】
【０１２１】
１０  ログ制御装置
１１  通信制御部
１２  記憶部
１３  ローカルフラグテーブル
１４  グローバルフラグテーブル
１５  切替時刻テーブル
１６  ログファイルＡ
１７  ログファイルＢ
２０  制御部
２１  スレッド実行部
２２  ローカル処理部
２２ａ  ローカル設定部
２２ｂ  ローカル比較部
２３  グローバル比較部
２４  更新部
２５  ログ出力部
【図１】
2015197690.tif 000003
【図２】
2015197690.tif 000004
【図３】
2015197690.tif 000005
【図４】
2015197690.tif 000006
【図５】
2015197690.tif 000007
【図６】
2015197690.tif 000008
【図７】
2015197690.tif 000009
【図８】
2015197690.tif 000010
【図９】
2015197690.tif 000011