(57)【要約】【課題】ログの出力の制御に対し、より汎用性が高い技術を提供する。【解決手段】ログ出力制御装置は、リクエストの応答時間を測定する測定手段と、前記応答時間が所定の閾値を超えているか否かを判定する判定手段と、判定結果に基づいて、ログファイルに対するログの書き込みを制御する制御手段と、前記制御手段による制御内容に基づいて、前記ログファイルにログを書き込む出力手段と、を備える。【選択図】      図１８
2017016173.tif 000002
【特許請求の範囲】
【請求項１】
リクエストの応答時間を測定する測定手段と、
前記応答時間が所定の閾値を超えているか否かを判定する判定手段と、
判定結果に基づいて、ログファイルに対するログの書き込みを制御する制御手段と、
前記制御手段による制御内容に基づいて、前記ログファイルにログを書き込む出力手段と、を備えることを特徴とするログ出力制御装置。
【請求項２】
前記制御手段は、前記応答時間が前記所定の閾値を超える場合、前記ログファイルに対するログの書き込みを停止するよう制御する、ことを特徴とする請求項１に記載のログ出力制御装置。
【請求項３】
前記制御手段は、ファイルの生成指示を検出し、生成されるファイルがログファイルか否かを判定し、前記生成されるファイルがログファイルである場合、当該ログファイルを、ログの書き込みの制御対象のログファイルとすることを特徴とする、請求項１または２に記載のログ出力制御装置。
【請求項４】
前記制御手段は、
前記判定結果に基づいて、ログの書き込みを停止するログファイルを選択し、選択した前記ログファイルに対するログの書き込みを停止するよう制御し、
前記選択したログファイルに対するログの書き込みの停止を制御した後に前記測定手段によって測定された前記応答時間に対する判定結果に基づいて、他のログファイルに対するログの書き込みを制御する、ことを特徴とする請求項１から３の何れか１項に記載のログ出力制御装置。
【請求項５】
前記制御手段は、
前記ログファイルに対するログの書き込みを制御する順位を示す順位情報を管理し、
前記判定結果と、前記順位情報とに基づいて、ログの書き込みを停止するログファイルを選択する、ことを特徴とする請求項４に記載のログ出力制御装置。
【請求項６】
前記制御手段は、
前記ログファイルの生成元に応じて、前記ログファイルの重要度を算出し、
前記算出した重要度に応じて前記順位を決定する、ことを特徴とする請求項５に記載のログ出力制御装置。
【請求項７】
前記出力手段は、ログファイルにログを書き込むための複数のプロセスを実行するための、複数のファイル処理手段を含み、
前記制御手段は、前記判定結果に基づいて、前記複数のプロセスの何れかを示す情報を制御することにより、前記ログファイルに対するログの書き込みを制御し、
前記制御手段による制御内容に基づいて、制御内容によって特定される前記プロセスに関連する前記ファイル処理手段が前記プロセスを実行する、請求項１から６の何れか１項に記載のログ出力制御装置。
【請求項８】
前記制御手段は、ログファイルを識別する識別情報と、該識別情報に関連付けられた、前記ログファイルに対するログの書き込みの可否を示す可否情報とを含むログファイルリストを用いて、ログの書き込みを制御し、
前記出力手段は、前記ログファイルリストに基づいて、前記ログファイルにログを書き込む、または、前記ログファイルに対するログの書き込みを停止する、ことを特徴とする請求項１から７の何れか１項に記載のログ出力制御装置。
【請求項９】
リクエストの応答時間を測定し、
前記応答時間が所定の閾値を超えているか否かを判定し、
判定結果に基づいて、ログファイルに対するログの書き込みを制御し、
制御内容に基づいて、前記ログファイルにログを書き込む、ログ出力制御方法。
【請求項１０】
リクエストの応答時間を測定する処理と、
前記応答時間が所定の閾値を超えているか否かを判定する処理と、
判定結果に基づいて、ログファイルに対するログの書き込みを制御する処理と、
制御内容に基づいて、前記ログファイルにログを書き込む処理と、をコンピュータに実行させることを特徴とするプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ログ出力制御装置、ログ出力制御方法、およびプログラムに関する。
【背景技術】
【０００２】
情報処理装置において、ログを出力することが行われている。このログの出力の粒度（ログレベル）を、システムを停止することなく変更する方法が、例えば、特許文献１に記載されている。
【０００３】
また、特許文献２には、通信プロセス内に含まれる制御部が、ログの出力制御を行うことにより、情報処理装置の負荷に応じたログの出力を制御することが記載されている。
【０００４】
また、特許文献３には、監視ログの出力の定義を動的に変更する方法が記載されている。
【０００５】
また、複数のログ種別間で同じデータ処理方式を共有する方法が、例えば、特許文献４に記載されている。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特許第５３５９０２３号公報
【特許文献２】特開２０１４−７８１６６号公報
【特許文献３】特開２０１１−１１３２４３号公報
【特許文献４】特開２０１２−２０３５００号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
しかしながら、上述の各特許文献に記載された技術では、ログの出力の振る舞いを変更できる範囲が限定的であるという課題がある。
【０００８】
例えば、上述した特許文献１から３に記載の技術では、ログの出力制御（ログレベルの変更）が、実行するプロセス内で行われている。しかしながら、全てのプロセスが、ログの出力制御を行う機能を有しているわけではない。そのため、ログの出力制御機能を有さないプロセスのログの出力の振る舞いを変更できない。
【０００９】
本発明は上記課題に鑑みてなされたものであり、その目的は、ログの出力の制御に対し、より汎用性が高い技術を提供することにある。
【課題を解決するための手段】
【００１０】
本発明の一態様に係るログ出力制御装置は、リクエストの応答時間を測定する測定手段と、前記応答時間が所定の閾値を超えているか否かを判定する判定手段と、判定結果に基づいて、ログファイルに対するログの書き込みを制御する制御手段と、前記制御手段による制御内容に基づいて、前記ログファイルにログを書き込む出力手段と、を備える。
【００１１】
また、本発明の一態様に係るログ出力制御方法は、リクエストの応答時間を測定し、前記応答時間が所定の閾値を超えているか否かを判定し、判定結果に基づいて、ログファイルに対するログの書き込みを制御し、制御内容に基づいて、前記ログファイルにログを書き込む。
【００１２】
なお、上記各装置または方法を、コンピュータによって実現するコンピュータプログラム、およびそのコンピュータプログラムが格納されている、コンピュータ読み取り可能な非一時的記録媒体も、本発明の範疇に含まれる。
【発明の効果】
【００１３】
本発明によれば、より汎用性が高い、ログの出力の制御を行うことができる。
【図面の簡単な説明】
【００１４】
【図１】本発明の第１の実施の形態におけるログ出力制御装置を含む情報処理装置のハードウェア構成の一例を示す図である。
【図２】本発明の第１の実施の形態におけるログ出力制御装置の機能構成の一例を示す機能ブロック図である。
【図３】ＳＩＰリクエストの一例を示す図である。
【図４】本発明の第１の実施の形態における記憶部に格納されているログファイルリストの一例を示す図である。
【図５】本発明の第１の実施の形態におけるログ出力制御装置のログファイルリストのフラグの変更処理の流れの一例を示すフローチャートである。
【図６】本発明の第１の実施の形態におけるログ出力制御装置のログの出力処理の流れの一例を示すフローチャートである。
【図７】本発明の第２の実施の形態におけるログ出力制御装置の機能構成の一例を示す機能ブロック図である。
【図８】ログファイル推定ポリシーの一例を示す図である。
【図９】本発明の第１の実施の形態におけるログ出力制御装置のログファイルリストに対するレコードの追加処理の流れの一例を示すフローチャートである。
【図１０】本発明の第３の実施の形態におけるログ出力制御装置の機能構成の一例を示す機能ブロック図である。
【図１１】本発明の第３の実施の形態における記憶部に格納されているログファイルリストの一例を示す図である。
【図１２】本発明の第３の実施の形態におけるログ出力制御装置のログファイルリストのフラグの変更処理の流れの一例を示すフローチャートである。
【図１３】本発明の第４の実施の形態におけるログ出力制御装置の機能構成の一例を示す機能ブロック図である。
【図１４】本発明の第４の実施の形態におけるログ出力制御装置のログファイルの制御順位の決定処理の流れの一例を示すフローチャートである。
【図１５】本発明の第５の実施の形態におけるログ出力制御装置の機能構成の一例を示す機能ブロック図である。
【図１６】本発明の第５の実施の形態における記憶部に格納されているログファイルリストの一例を示す図である。
【図１７】本発明の第５の実施の形態におけるログ出力制御装置の処理の流れの一例を示すフローチャートである。
【図１８】本発明の第６の実施の形態におけるログ出力制御装置の機能構成の一例を示す機能ブロック図である。
【発明を実施するための形態】
【００１５】
以下、本発明の各実施の形態について、図面を参照して説明する。なお、本発明の各実施の形態において説明するログ出力制御装置は、オペレーティングシステム（ＯＳ：Ｏｐｅｒａｔｉｎｇ  Ｓｙｓｔｅｍ）の一機能として使用されることを想定して説明を行うが、本発明の各実施の形態はこれに限定されるものではない。
【００１６】
＜第１の実施の形態＞
本発明の第１の実施の形態について、図面を参照して詳細に説明する。まず、本実施の形態におけるログ出力制御装置を含む情報処理装置のハードウェア構成について説明する。図１は、本実施の形態におけるログ出力制御装置を含む情報処理装置のハードウェア構成の一例を示す図である。
【００１７】
情報処理装置１は、図１に例示するハードウェア資源で実現される。図１に示す構成は、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）１０１、ＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）１０２、通信インタフェース１０３、記憶装置１０４およびＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）１０５を備える。なお、図１に示す各ハードウェア資源は、一例であり、情報処理装置１が、図１に示すハードウェア資源以外の部材を有していてもよいことは言うまでもない。
【００１８】
記憶装置１０４はＨＤＤ（Ｈａｒｄ  Ｄｉｓｋ  Ｄｒｉｖｅ）やＳＳＤ（Ｓｏｌｉｄ  Ｓｔａｔｅ  Ｄｒｉｖｅ）で実現される。記憶装置１０４には、ＯＳやアプリケーションプログラム等のソフトウェアプログラム（コンピュータプログラム）が格納されている。ＣＰＵ１０５は、この記憶装置１０４に記憶された各種ソフトウェアプログラムを、ＲＡＭ１０１に読み出して実行する。また、ＣＰＵ１０５は、ＲＯＭ１０２に記憶されたソフトウェアプログラムを、ＲＡＭ１０１に読み出して実行する。
【００１９】
上述したとおり、本実施の形態では、後述するログ出力制御装置は、ＯＳの一機能として動作する。そのため、本実施の形態において、ＣＰＵ１０５は、記憶装置１０４に記憶されたＯＳの機能のうち、ログ出力制御装置の機能を実現するコンピュータプログラムを、ＲＡＭ１０１に読み出して実行する。
【００２０】
また、ログ出力制御装置の機能を実現するコンピュータプログラムは、記憶装置１０４に格納されているため、本実施の形態は、係るコンピュータプログラムを表すコード或いは係るコンピュータプログラムを格納した記憶媒体によって構成されると捉えることができる。
【００２１】
なお、後述するログ出力制御装置の機能は、一部または全部を、ハードウェアの回路として実現してもよい。
【００２２】
（ログ出力制御装置１００）
次に、図２を参照して、ログ出力制御装置１００の機能構成について説明する。図２は、本実施の形態におけるログ出力制御装置１００の機能構成の一例を示す機能ブロック図である。図２に示す通り、ログ出力制御装置１００は、測定部１１０、判定部１２０、記憶部１３０、制御部１４０、および、出力部１５０を備える。
【００２３】
測定部１１０は、リクエストの応答時間を測定する。リクエストとは、情報処理装置１で実行されるサーバプロセスが提供するサービスを利用する要求元から、例えば、ネットワークを介して送信される要求である。リクエストには、例えば、ＷｅｂリクエストやＳＩＰ（Ｓｅｓｓｉｏｎ  Ｉｎｉｔｉａｔｉｏｎ  Ｐｒｏｔｏｃｏｌ）リクエストなどがある。
【００２４】
Ｗｅｂリクエストは、例えば、ＨＴＴＰ（ＨｙｐｅｒＴｅｘｔ  Ｔｒａｎｓｆｅｒ  Ｐｒｏｔｏｃｏｌ）リスエストである。Ｗｅｂリクエストは、一般的にインターネット上のウェブページをユーザが閲覧する場合に、Ｗｅｂサーバに対して送信される要求である。
【００２５】
ＳＩＰリクエストは、通話セッションを確立する際に用いられる。例えば、あるユーザ（送信側ユーザ）が他のユーザ（着信側ユーザ）と音声通話を開始する場合、送信側ユーザの送信側装置は、ＳＩＰリクエストをＳＩＰサーバに送信する。ＳＩＰサーバは、受け取ったＳＩＰリクエストの内容を確認し、着信側ユーザの着信側装置へ通話要求があることを通知する。
【００２６】
このようなリクエストにおける、リクエストの応答時間とは、サーバプロセスが、リクエストを要求元から受け取った時点から、リクエストに対応する処理結果を送信先に送信するまでの時間である。リクエストがＷｅｂリクエストの場合、要求元および送信先は、Ｗｅｂリクエストを送信した装置になる。この場合、リクエストの応答時間は、情報処理装置１がＷｅｂリクエストを受け取った時点から、リクエストの応答であるウェブページ情報を、要求元の装置（送信先）へ送信する（送信が完了する）までの時間となる。
【００２７】
また、リクエストがＳＩＰリクエストの場合、要求元は、上記送信側ユーザの送信側装置であり、送信先は、着信側ユーザの着信側装置となる。この場合のリクエストの応答時間は、情報処理装置１が送信側装置から送信されたＳＩＰリクエストを受け取ってから、このＳＩＰリクエストを着信側装置に送信するまでの時間となる。
【００２８】
ここで、リクエストの受信順序と、リクエストに対する応答の送信順序は、常に同じ順序で実行されるとは限らない。情報処理装置１は、受信したリクエストのうち、該リクエストに対応する処理が終了したものから順に応答を送信することになる。情報処理装置１が受信するリクエストが、例えば、リクエストＡ、リクエストＢ、リクエストＣ、リクエストＤおよびリクエストＥの５つであり、夫々に対応する応答が、応答Ａ、応答Ｂ、応答Ｃ、応答Ｄおよび応答Ｅであるとする。情報処理装置１は、上記５つのリクエストをリクエストＡ、リクエストＢ、リクエストＣ、リクエストＤおよびリクエストＥの順で受信した場合であっても、これらのリクエストの処理内容に応じて応答を出力することになる。したがって、情報処理装置１は、上記リクエストの夫々に対応する応答を、例えば、応答Ｃ、応答Ｂ、応答Ａ、応答Ｅおよび応答Ｄの順で送信する可能性がある。したがって、情報処理装置１は、どのリクエストがどの応答と対になっているかを認識する必要がある。
【００２９】
測定部１１０は、このリクエストと応答との対応関係を確認するための識別子（以下、リクエストＩＤ（Ｉｄｅｎｔｉｆｉｅｒ））を作成して、リクエストの応答時間を測定する。測定部１１０が作成する識別子について、リクエストがＳＩＰリクエストである場合を例に説明を行う。
【００３０】
図３は、ＳＩＰリクエストの一例を示す図である。図３に示すＳＩＰリクエストは、ＳＩＰリクエストの一部（ヘッダ部分）のみを示している。図３に示す通り、ＳＩＰリクエストのヘッダには、Ｃａｌｌ−ＩＤとＣＳｅｑ（Ｃｏｍｍａｎｄ  Ｓｅｑｕｅｎｃｅ）とが含まれる。このＣａｌｌ−ＩＤと、ＣＳｅｑとは、リクエストごとに一意に設定されるものである。また、リクエストに対する応答のヘッダにも、リクエストと同じＣａｌｌ−ＩＤとＣＳｅｑとが付与される。
【００３１】
したがって、測定部１１０は、Ｃａｌｌ−ＩＤとＣＳｅｑとを用いて、リクエストＩＤを作成する。図３に示すＣａｌｌ−ＩＤは、「１２３４５６＠ｓｉｐｓｅｒｖｅｒ．ｃｏｍ」であり、ＣＳｅｑは「１  ＩＮＶＩＴＥ」である。測定部１１０は、例えば、Ｃａｌｌ−ＩＤのアットマークより前の部分と、ＣＳｅｑの値とを、アンダースコアで結んだ「１２３４５６＿１＿ＩＮＶＩＴＥ」をリクエストＩＤとして生成する。なお、測定部１１０が作成するリクエストＩＤはこれに限定されるものではなく、リクエストと応答とが特定できるものであればよい。
【００３２】
測定部１１０は、作成したリクエストＩＤを、当該リクエストの応答が要求元に送信されるまで保持する。そして、測定部１１０は、リクエストの受信時刻と、当該リクエストに対応する応答の送信時刻との差からリクエストの応答時間を算出する。そして、測定部１１０は、算出したリクエストの応答時間を、判定部１２０に出力する。
【００３３】
判定部１２０は、測定部１１０から、リクエストの応答時間を受信する。判定部１２０は、受信したリクエストの応答時間が予め設定されている閾値を超えているか否かを判定する。この閾値は、判定部１２０内に格納されているとするが、後述する記憶部１３０に格納されていてもよい。判定部１２０は、判定結果を制御部１４０に出力する。
【００３４】
記憶部１３０は、ログ（ログデータとも呼ぶ）の出力として使用されているファイルの情報（ファイル情報と呼ぶ）のレコードを列挙したリストであるログファイルリスト１３１を格納する。なお、記憶部１３０は、ログ出力制御装置１００とは別の記憶部で実現されるものであってもよい。
【００３５】
記憶部１３０に格納されているログファイルリスト１３１について、図４を参照して詳細に説明する。図４は、記憶部１３０に格納されているログファイルリスト１３１の一例を示す図である。ログファイルリスト１３１には、図４に示す通り、ファイル番号と、ファイル名と、フラグとが含まれる。
【００３６】
ファイル番号は、ログファイルリスト１３１内における識別子であり、例えば、ログファイルリスト１３１に登録された順番を示している。
【００３７】
ファイル名は、ログファイルの名前を示している。なお、図４に記載のログファイルリスト１３１は、ログファイルを識別する情報として、ファイル名を含むことを例に説明を行うが、ログファイルリスト１３１に含まれる情報は、ファイル名でなくてもよい。ログファイルリスト１３１には、ファイル名の代わりに、ログファイルを識別できる識別情報が含まれていればよい。
【００３８】
フラグは、ログファイルに対するログの書き込みの可否を示す可否情報である。図４においては、フラグが取りうる値は、「ＹＥＳ」または「ＮＯ」としているが、例えば、「０」と「１」とであってもよい。フラグは、該フラグに関連付けられたファイル名によって示されるログファイルにログを書き込むか否かを示すものであればよい。フラグが「ＹＥＳ」の場合、該フラグに関連付けられたファイル名によって示されるログファイルは、ログが書き込まれるファイルであることを示す。一方、フラグが「ＮＯ」の場合、該フラグに関連付けられたファイル名によって示されるログファイルは、ログの書き込みが停止されたファイルであることを示す。以降、ログファイルにログを書き込むことを「ログファイルを出力する」とも表現する。
【００３９】
図４に示す通り、ファイル番号が「１」のログファイルは、ファイル名が「ファイルＡ」であり、フラグが「ＹＥＳ」であることがわかる。記憶部１３０には、このように、ファイル番号とファイル名とフラグとを含む、複数のレコードを含むログファイルリスト１３１が格納されている。
【００４０】
制御部１４０は、記憶部１３０に格納されているログファイルリスト１３１を管理する。具体的には、制御部１４０は、ログファイルリスト１３１のレコードの追加および変更を行う。制御部１４０は、ログファイルリスト１３１のレコードの削除を行ってもよい。
【００４１】
制御部１４０が行う、ログファイルリスト１３１のレコードの変更についてさらに説明する。制御部１４０は、判定部１２０から判定結果を受け取り、判定結果に基づいて、記憶部１３０に格納されているログファイルリスト１３１のフラグを変更する。制御部１４０が受け取った判定結果が、リクエストの応答時間が閾値を超えることを示す場合、制御部１４０は、ログファイルリスト１３１のレコードのうち、フラグが「ＹＥＳ」であるレコードのフラグを「ＮＯ」に変更する。フラグが「ＮＯ」のログファイルは、上述したとおり、ログの書き込みが停止されたファイル（ログの書き込みが不可のファイル）である。このように、制御部１４０は、ログファイルに対するログの出力を許可するか否かを変更しているため、ログの出力の振る舞いを制御（変更）する機能を有していると言える。
【００４２】
出力部１５０は、制御部１４０による制御内容に基づいて、ログファイルにログを書き込む。出力部１５０は、記憶部１３０に格納されているログファイルリスト１３１に記載されたフラグに基づいて、該フラグに関連付けられたログファイルにログを書き込む、または、ログファイルに対するログの書き込みを停止する。具体的には、出力部１５０は、ログファイルリスト１３１のフラグが「ＹＥＳ」の場合、該フラグに関連付けられたファイル名によって示されるログファイルにログを出力する。また、出力部１５０は、ログファイルリスト１３１のフラグが「ＮＯ」の場合、該フラグに関連付けられたファイル名によって示されるログファイルに対するログの出力を停止する。
【００４３】
例えば、図１に示すアプリケーションプログラムがＣＰＵ１０５によって実行され、ログが出力される際に、出力部１５０が呼び出される。これにより、出力部１５０は、ログの出力指示を受け取る。そして、出力部１５０は、受け取った出力指示に含まれるログの書き込み先であるログファイルのファイル名が、記憶部１３０内のログファイルリスト１３１に含まれるか否かを確認する。出力部１５０は、ログファイルのファイル名が、ログファイルリスト１３１に含まれない場合は、ログファイルにログを書き込む。また、出力部１５０は、ログファイルのファイル名が、ログファイルリスト１３１に含まれる場合、このファイル名に関連付けられたフラグを確認する。
【００４４】
出力部１５０は、フラグが「ＹＥＳ」の場合、このファイル名によって示されるログファイルにログを出力する。フラグが「ＮＯ」の場合、出力部１５０は、ログの出力を行わない。このとき、出力部１５０は、ログファイルに対するログの出力が成功したことを示す通知（メッセージ）を、ログの出力指示を送信した送信元である、実行されているアプリケーションプログラムのセッションに返す。なお、出力部１５０が、アプリケーションプログラムが実行されることによって、出力部１５０が受け取るログの出力指示を、以下では、アプリケーションプログラムから出力される出力指示とも呼ぶ。また、アプリケーションプログラムを以下では、単にアプリケーションとも呼ぶ。
【００４５】
出力部１５０の機能は、例えば、ＵＮＩＸ（登録商標）のｗｒｉｔｅシステムコールによって実現される。ｗｒｉｔｅシステムコールは、該ｗｒｉｔｅシステムコールが正常に終了する場合、ファイルに書き込まれたバイト数を返り値として返す。したがって、アプリケーションプログラムは、ログとしてログファイルに書き込むと想定しているバイト数と、ｗｒｉｔｅシステムコールの返り値とを比較することによって、ログの出力が正しく終了したかを判断できる。つまり、ログファイルに出力するはずのバイト数とｗｒｉｔｅシステムコールの返り値とが同じ値の場合、アプリケーションプログラムは、ログファイルに対する出力（ログの書き込み）は正常終了したと判断できる。そうでなければ、アプリケーションプログラムは、何らかの問題があると判断できる。
【００４６】
アプリケーションプログラムが実行されることにより、ｗｒｉｔｅシステムコールが呼び出されると、出力部１５０は、ｗｒｉｔｅシステムコールに含まれるファイルディスクリプタによって参照されるログファイルに対するログの出力指示を受け取る。そして、出力部１５０は、上記ログファイルのファイル名が、ログファイルリスト１３１に含まれるか否かを確認する。そして、上記ログファイルのファイル名が、ログファイルリスト１３１に含まれる場合、出力部１５０は、このファイル名に関連付けられたフラグを確認する。フラグが「ＮＯ」の場合、出力部１５０は、ログファイルにログを書き込まないが、ログファイルに書き込む予定であったログのバイト数を返り値として返す。このバイト数が、上述したログファイルに対するログの出力が成功したことを示す通知（メッセージ）に相当する。
【００４７】
これにより、アプリケーションは、ｗｒｉｔｅシステムコールの返り値として、出力部１５０が返した返り値を受け取ることができる。これによって、ｗｒｉｔｅシステムコールを呼び出したアプリケーションプログラムは、ログファイルに対するログの出力があたかも正常に終了したと認識することできる。しかしながら、実際には、ｗｒｉｔｅシステムコールによるログの出力は行われてはいないので、情報処理装置１は、ｗｒｉｔｅシステムコールの実行に使用されると想定された、リソース（ＣＰＵ１０５やメモリ（ＲＡＭ１０１等）等）の領域を他の処理に振り替えることができる。
【００４８】
（ログ出力制御装置１００の動作）
次に、本実施の形態におけるログ出力制御装置１００の動作について説明する。まず、図５を参照して、ログファイルリスト１３１のフラグの変更処理の流れについて説明する。図５は、本実施の形態におけるログ出力制御装置１００のログファイルリスト１３１のフラグの変更処理の流れの一例を示すフローチャートである。
【００４９】
まず、測定部１１０が、リクエストの応答時間を測定する（ステップＳ５１）。次に、判定部１２０が、ステップＳ５１で測定された応答時間が、予め設定された閾値を超えているか否かを判定する（ステップＳ５２）。閾値を超えていない場合（ステップＳ５２にてＮＯ）、ログ出力制御装置１００は、処理をステップＳ５１に戻す。
【００５０】
閾値を超えている場合（ステップＳ５２にてＹＥＳ）、制御部１４０は、記憶部１３０に格納されているログファイルリスト１３１に含まれるログファイルに対するログの出力を停止するよう、フラグを「ＮＯ」に変更する（ステップＳ５３）。このとき、制御部１４０がフラグをＮＯにするレコード数は、１つであってもよいし、複数であってもよい。制御部１４０は、ログファイルリスト１３１の全てのレコードに対して、フラグを「ＮＯ」に変更してもよい。
【００５１】
以上により、ログ出力制御装置１００は、ログファイルリスト１３１のフラグの変更処理を終了する。
【００５２】
なお、制御部１４０は、例えば、所定のタイミングで、フラグを「ＹＥＳ」に変更してもよい。例えば、応答時間が閾値を超えない時間が、所定時間より長い間続いた場合、制御部１４０は、フラグを「ＹＥＳ」に変更してもよい。また、制御部１４０はログ出力制御装置１００の起動時に、フラグを「ＹＥＳ」に設定してもよい。
【００５３】
次に、図６を参照して、ログの出力処理の流れについて説明する。図６は、本実施の形態におけるログ出力制御装置のログの出力処理の流れの一例を示すフローチャートである。
【００５４】
ログ出力制御装置１００の出力部１５０は、ログを出力する（書き込む）ログファイルのファイル名を取得する（ステップＳ６１）。このとき、出力部１５０が取得するのはファイル名でなくてもよい。出力部１５０は、ファイル名が特定できる情報を取得すればよい。例えば、上述したｗｒｉｔｅシステムコールでは、ファイルディスクリプタが出力部１５０に提供される。この場合、出力部１５０は、このファイルディスクリプタを取得し、このファイルディスクリプタからファイル名を特定すればよい。
【００５５】
次に、出力部１５０は、ログファイルリスト１３１に、ステップＳ６１で取得したファイル名が含まれるか否かを確認する（ステップＳ６２）。ファイル名が含まれる場合（ステップＳ６２にてＹＥＳ）、該ファイル名に関連付けられたフラグが、「ＹＥＳ」か否かを確認する（ステップＳ６３）。
【００５６】
ログファイルリスト１３１に、ステップＳ６１で取得したファイル名が含まれない場合（ステップＳ６２にてＮＯ）、または、フラグが「ＹＥＳ」の場合（ステップＳ６３にてＹＥＳ）、出力部１５０は、ログを出力する。つまり、出力部１５０は、ステップＳ６１で取得したファイル名によって示されるログファイルにログを書き込む（ステップＳ６４）。
【００５７】
フラグが「ＮＯ」の場合（ステップＳ６３にてＮＯ）、出力部１５０は、ログファイルに対するログの出力が成功したことを示す通知（メッセージ）を、ログの出力指示を送信した送信元に返す（ステップＳ６５）。このとき、出力部１５０は、ログファイルに対してログを出力しない。
【００５８】
以上により、ログ出力制御装置１００は、ログの出力処理を終了する。
【００５９】
（効果）
以上により、本実施の形態に係るログ出力制御装置１００は、より汎用性が高い、ログの出力の制御を行うことができる。なぜならば、測定部１１０がリクエストの応答時間を測定し、判定部１２０が、応答時間が所定の閾値を超えているか否かを判定し、制御部１４０が、判定結果に基づいて、ログファイルに対するログの書き込みを制御するからである。
【００６０】
これにより、ログの出力の要求元（例えば、アプリケーションプログラム）がログの出力を制御できない場合であっても、リクエストの応答時間に応じて、ログ出力制御装置１００は、ログの出力の制御を行うことができる。
【００６１】
上述したとおり、各特許文献に記載の技術のように、ログの出力制御（ログレベルの変更）を行う機能を有しないプロセスが存在する情報処理装置では、リクエスト処理を行うに当たり、上記プロセスがリソースを占有してしまい、リソースを移動できない可能性がある。しかしながら、本実施の形態に係るログ出力制御装置１００では、リクエストの応答時間に応じて、ログの出力の制御を行うため、ログの出力制御を行う機能を有しないプロセスが出力するログに対しても、ログの出力制御を行うことができる。したがって、本実施の形態に係るログ出力制御装置１００は、ログ出力に使用されていたリソースを、効率的にリクエスト処理に割り振ることができる。
【００６２】
また、ログ出力制御装置１００は、制御部１４０は、リクエストの応答時間が所定の閾値を超える場合、ログファイルに対するログの書き込みを停止するよう制御する。そして、ログ出力制御装置１００の出力部１５０は、制御部１４０による制御内容に基づいて、ログファイルにログを書き込む、または、ログファイルに対するログの書き込みを停止する。
【００６３】
これにより、本実施の形態に係るログ出力制御装置１００は、リクエストの応答時間が所定の閾値を超えた場合、ログの出力制御を行う機能を有しないプロセスが出力するログに対しても、ログの出力を停止することができる。
【００６４】
このとき、ログ出力制御装置１００の制御部１４０は、ログファイルを識別する識別情報と、識別情報に関連付けられた、ログファイルに対するログの書き込みの可否を示す可否情報とを含むログファイルリストを用いて、ログの書き込みを制御する。そして、出力部１５０は、ログファイルリストに基づいて、ログファイルにログを書き込む、または、ログファイルに対するログの書き込みを停止する。これにより、本実施の形態に係るログ出力制御装置１００は、より効率的に、ログの出力制御を行うことができる。
【００６５】
また、本実施の形態に係るログ出力制御装置１００によれば、リクエストの応答時間に応じて、ログの出力制御を行うことができる。例えば、ユーザによる指示に基づくログの出力制御を、リクエスト量の増加速度と同じような速度では行うことは難しい。しかしながら、本実施の形態に係るログ出力制御装置１００は、ユーザによる指示ログレベルの指示を必要としないログの出力制御を行うため、リクエストの応答時間に追従してログ出力の振る舞いを制御することができる。
【００６６】
また、本実施の形態に係るログ出力制御装置１００の出力部１５０は、ログファイルに対してログを出力しないが、ログファイルに対するログの出力が成功したことを示す通知（メッセージ）を、ログの出力を要求した要求元に返す。これにより、ログファイルに対してログを出力する頻度や量を下げる場合に比べ、ログ出力のために使用されるキューがあふれることによるエラーを回避することができる。また、ログファイルに対してログを出力する頻度や量を下げる場合、ログ出力の要求元は、ログの出力が完了するまで、ログ出力が成功したか失敗したかを確認することができない。したがって、要求元が、ログ出力の結果を使った処理を行う機能を有する場合、上記の場合、要求元の処理を停止させてしまう。
しかしながら、本実施の形態に係るログ出力制御装置１００は、ログの出力が成功したことを示す通知を要求元に対して返す。これにより、ログ出力の結果を使った処理を行うような要求元であっても、本実施の形態に係るログ出力制御装置１００は、要求元の処理を停止することを回避させることができる。
【００６７】
＜第２の実施の形態＞
次に、本発明の第２の実施の形態について説明する。なお、説明の便宜上、前述した第１の実施の形態で説明した図面に含まれる部材と同じ機能を有する部材については、同じ符号を付し、その説明を省略する。
【００６８】
図７は本実施の形態に係るログ出力制御装置２００の機能構成の一例を示す機能ブロック図である。なお、本実施の形態に係るログ出力制御装置２００を含む情報処理装置のハードウェア構成は、図１に示す情報処理装置１と同様であるため、説明を省略する。
【００６９】
図７に示す通り、ログ出力制御装置２００は、測定部１１０、判定部１２０、記憶部２３０、制御部２４０、および出力部１５０を備える。本実施の形態に係るログ出力制御装置２００は、上述した第１の実施の形態に係るログ出力制御装置１００の記憶部１３０に代えて、記憶部２３０を備え、制御部１４０に代えて制御部２４０を備える構成である。
【００７０】
記憶部２３０は、記憶部１３０と同様に、ログファイルリスト１３１を格納している。また、記憶部２３０は、更に、ログファイル推定ポリシー２３２を格納している。ログファイル推定ポリシー２３２は、後述する制御部２４０による推定処理に用いられるものである。ログファイル推定ポリシー２３２には、ログファイルのパターンが記載されている。これを、図８を参照して説明する。
【００７１】
図８は、ログファイル推定ポリシー２３２の一例を示す図である。図８に示す通り、ログファイル推定ポリシー２３２には、ルール番号と、パターンとが含まれる。ルール番号は、パターンを特定するためのユニークな番号である。パターンは、ログファイルのパターンを示すものである。なお、図８に示すログファイル推定ポリシー２３２に含まれるパターンは、正規表現で記載されているとするが、本実施の形態はこれに限定されるものではない。
【００７２】
図８に示す通り、ルール番号「１」に関連付けられたパターンは、「／ｖａｒ／ｌｏｇ／＊」である。これは、／ｖａｒ／ｌｏｇディレクトリに存在する全てのファイルがログファイルであることを示している。また、ルール番号「２」に関連付けられたパターンは「＊（＿｜．）ｌｏｇ」である。これは、ファイル名の末尾が「＿ｌｏｇ」または「．ｌｏｇ」のファイルがログファイルであることを示している。また、ルール番号「３」に関連付けられたパターンは、プログラムの実行によって出力されるログファイルを示している。このパターンは、正規表現では表すことができないログファイルを表現している。図８において、「Ｐｒｏｇｒａｍ」は、パターンがプログラムであることを示しており、括弧内の値「／ｈｏｍｅ／ｐａｔｔｅｒｎ／１」は、プログラムの格納場所を示している。これにより、「／ｈｏｍｅ／ｐａｔｔｅｒｎ／１」に格納されたプログラムが実行されることによって出力されるファイルがログファイルであることがわかる。
【００７３】
制御部２４０は、制御部１４０と同様に、記憶部１３０に格納されているログファイルリスト１３１を管理する。更に、制御部２４０は、ログファイル推定ポリシー２３２に記載されているルールに従って、使用する（オープンする）ファイルがログファイルか否かを推定する。具体的には、制御部２４０は、使用するファイルが、ログファイル推定ポリシー２３２に含まれるパターンを満たすファイルか否かを確認することにより、使用するファイルがログファイルか否かを推定（判定）する。例えば、アプリケーションプログラムやその他の情報処理装置１内の部材が動作することによって、ファイルの作成が行われると、制御部２４０は、ファイルが作成されたことを検出する。そして、制御部２４０は、作成されたファイルがログファイル推定ポリシー２３２に記載のパターンを満たすか否かを確認する。そして、例えば、作成されたファイルが「／ｖａｒ／ｌｏｇ／ａａａ．ｔｘｔ」の場合、このファイルは、ルール番号「１」のパターンを満たしているので、制御部２４０は、作成されたファイルがログファイルであると推定する。そして、制御部２４０は、ログファイルであると推定したファイルのファイル名を、ログファイルリスト１３１に追加する。このとき、制御部２４０は、フラグを、初期値の「ＹＥＳ」にして、上記ファイル名を含むレコードを、ログファイルリスト１３１に追加する。
【００７４】
このような動作により、例えば、ルール番号「１」のパターンを満たすファイル、つまり、／ｖａｒ／ｌｏｇディレクトリに存在する全てのファイルがログファイルリスト１３１に含まれることになる。
【００７５】
次に、本実施の形態におけるログ出力制御装置２００の動作について説明する。ログ出力制御装置２００におけるログファイルリスト１３１のフラグの変更処理の流れおよびログの出力処理の流れは、夫々、図５および図６と同様であるため、説明を省略する。以下では、図９を参照して、本実施の形態におけるログ出力制御装置２００のログファイルリスト１３１に対するレコードの追加処理の流れについて説明する。この処理は、上述したログファイルリスト１３１のフラグの変更処理およびログの出力処理とは独立して動作する。
【００７６】
図９は、本実施の形態におけるログ出力制御装置２００のログファイルリスト１３１に対するレコードの追加処理の流れの一例を示すフローチャートである。図９に示す処理は、ファイルが作成されるときに実行される。
【００７７】
図９に示す通り、制御部２４０は、ファイルが作成されたことを検出する（ステップＳ９１）。そして、制御部２４０は、作成されたファイルが、ログファイル推定ポリシー２３２に含まれるパターンを満たすか否かを確認することにより、作成されたファイルがログファイルか否かを推定（判定）する（ステップＳ９２）。
【００７８】
作成されたファイルがログファイルではない場合（ステップＳ９２にてＮＯ）、つまり、作成されたファイルがログファイル推定ポリシー２３２に含まれるパターンを満たさない場合、制御部２４０は、ステップＳ９１に処理を戻す。
【００７９】
作成されたファイルがログファイルの場合（ステップＳ９２にてＹＥＳ）、つまり、作成されたファイルがログファイル推定ポリシー２３２に含まれるパターンを満たす場合、制御部２４０は、新たなレコードを、ログファイルリスト１３１に追加する（ステップＳ９３）。このとき、制御部２４０が追加するレコードは、作成されたファイルのファイル名と、フラグの初期値（この場合「ＹＥＳ」）とを含む。
【００８０】
以上で、ログ出力制御装置２００は、ログファイルリスト１３１に対するレコードの追加処理を終了する。
【００８１】
以上のように、本実施の形態に係るログ出力制御装置２００の制御部２４０は、新たにファイルが作成されたことを検出し、作成されたファイルがログファイルか否かを判定する。そして、制御部２４０は、作成されたファイルがログファイルと推定した場合、ログファイルリスト１３１に、ログファイルであると推定したファイルのファイル名を含むレコードを追加する。これにより、制御部２４０は、ログファイルであると推定したファイルを、ログの書き込みの制御対象のログファイルであるとすることができる。
【００８２】
これにより、ログ出力制御装置２００は、作成されたファイルがログファイルであると推定される場合、自動的に、ログファイルリスト１３１に作成されたファイルのファイル名を追加することができる。
【００８３】
これにより、本実施の形態に係るログ出力制御装置２００は、上述の第１の実施の形態に係る効果に加え、更に、ユーザによるログファイルリスト１３１の作成の手間を省くことができるという効果を得ることができる。
【００８４】
＜第３の実施の形態＞
次に、本発明の第３の実施の形態について説明する。なお、説明の便宜上、前述した第１および第２の実施の形態で説明した図面に含まれる部材と同じ機能を有する部材については、同じ符号を付し、その説明を省略する。
【００８５】
図１０は本実施の形態に係るログ出力制御装置３００の機能構成の一例を示す機能ブロック図である。なお、本実施の形態に係るログ出力制御装置３００を含む情報処理装置のハードウェア構成は、図１に示す情報処理装置１と同様であるため、説明を省略する。
【００８６】
図１０に示す通り、ログ出力制御装置３００は、測定部１１０、判定部１２０、記憶部３３０、制御部３４０、および出力部１５０を備える。本実施の形態に係るログ出力制御装置３００は、上述した第１の実施の形態に係るログ出力制御装置１００の記憶部１３０に代えて、記憶部３３０を備え、制御部１４０に代えて制御部３４０を備える構成である。
【００８７】
記憶部３３０は、ログファイルリスト３３１を格納している。なお、記憶部３３０は、上述した第２の実施の形態における記憶部２３０と同様に、ログファイル推定ポリシー２３２を格納してもよい。
【００８８】
記憶部３３０に格納されているログファイルリスト３３１について、図１１を参照して説明する。図１１は、記憶部３３０に格納されているログファイルリスト３３１の一例を示す図である。ログファイルリスト３３１には、図１１に示す通り、ファイル番号と、ファイル名と、フラグと、制御順位と、が含まれる。つまり、ログファイルリスト３３１は、上述のログファイルリスト１３１に制御順位を更に含むリストである。
【００８９】
制御順位は、ログファイルリスト３３１に含まれる複数のレコードから、制御部３４０が選択するレコードの順位を示すものである。この制御順位は、制御部３４０によってレコードが追加される際に、決定されるものである。この制御順位は、例えば、最後に追加されたレコードの制御順位の次の順位であってもよいし、ユーザによって指定される順位であってもよい。制御順位は１からＮ（Ｎはログファイルリスト３３１に記載されているファイル数）までの数値である。本実施の形態では、この制御順位は、制御部３４０がログファイルに対するログの書き込みを停止する順位を示す。
【００９０】
制御部３４０は、記憶部３３０に格納されているログファイルリスト３３１を管理する。具体的には、制御部３４０は、ログファイルリスト３３１のレコードの追加および変更を行う。制御部３４０は、ログファイルリスト３３１のレコードの削除を行ってもよい。
【００９１】
制御部３４０が行う、ログファイルリスト３３１のレコードの変更処理についてさらに説明する。制御部３４０は、判定部１２０から判定結果を受け取り、判定結果に応じて、記憶部３３０に格納されているログファイルリスト３３１のフラグを変更する。制御部３４０が受け取った判定結果が、リクエストの応答時間が閾値を超えたことを示す場合、制御部３４０は、ログファイルリスト３３１のレコードのうち、フラグが「ＹＥＳ」であるレコードのフラグを「ＮＯ」に変更する。このとき制御部３４０は、制御順位に従って、選択した１つのレコードのフラグを「ＮＯ」に変更する。
【００９２】
そして、制御部３４０は、測定部１１０に、再度リクエストの応答時間を測定するよう指示する。例えば、制御部３４０は、レコードの値を変更した旨の通知を、測定部１１０に送信することにより、測定部１１０に対し応答時間の測定を指示してもよい。
【００９３】
そして、測定部１１０は、制御部３４０からの指示を受け取ると、再度、リクエストの応答時間を測定する。その後、判定部１２０は、測定部１１０が測定した応答時間が所定の閾値を超えているか否かを判定し、判定結果を制御部３４０に出力する。
【００９４】
制御部３４０は、受け取った判定結果が、リクエストの応答時間が閾値を超えたことを示す場合、ログファイルリスト３３１のレコードのうち、前回フラグを変更したレコードの制御順位の次の順位のレコードを選択する。そして、制御部３４０は、選択したレコードのフラグを「ＮＯ」に変更する。その後、制御部３４０は、受け取った判定結果が、リクエストの応答時間が閾値以下となるまで、フラグを「ＮＯ」に変更する。このとき、制御部３４０が順に選択するレコードにおける制御順位は、１から昇順であってもよいし、Ｎから降順であってもよい。
【００９５】
制御部３４０が順に選択するレコードにおける制御順位が、１から昇順の場合、制御部３４０は、まず、図１１に示すログファイルリスト３３１のうち、ファイル名が「ファイルＡ」のフラグを「ＮＯ」に変更する。そして、制御部３４０は、次に受け取った判定結果が、リクエストの応答時間が閾値を超えたことを示す場合、次の制御順位である「２」を有するレコードである、ファイル名が「ファイルＤ」のレコードに含まれるフラグを「ＮＯ」に変更する。
【００９６】
なお、制御部３４０によるレコードの選択方法は、制御順位が１から（またはＮから）昇順（または降順）のレコードを選択することに限定されない。制御部３４０は、レコードを逐次的に選択すればよく、その選択方法は、特に限定されない。
【００９７】
次に、本実施の形態におけるログ出力制御装置３００の動作について説明する。図１２を参照して、ログファイルリスト３３１のフラグの変更処理の流れについて説明する。図１２は、本実施の形態におけるログ出力制御装置３００のログファイルリスト３３１のフラグの変更処理の流れの一例を示すフローチャートである。なお、ログ出力制御装置３００によるログの出力処理の流れは、図６と同様であるため説明を省略する。
【００９８】
まず、測定部１１０が、リクエストの応答時間を測定する（ステップＳ５１）。次に、判定部１２０が、ステップＳ５１で測定された応答時間が、予め設定された閾値を超えているか否かを判定する（ステップＳ５２）。
【００９９】
閾値を超えている場合（ステップＳ５２にてＹＥＳ）、制御部３４０は、記憶部３３０に格納されているログファイルリスト３３１に含まれるレコードのうち、フラグが「ＹＥＳ」のレコードが有るか否かを確認する（ステップＳ１２３）。フラグが全て「ＮＯ」の場合（ステップＳ１２３にてＮＯ）、ログ出力制御装置３００は処理を終了する。
【０１００】
フラグが「ＹＥＳ」のレコードが有る場合（ステップＳ１２３にてＹＥＳ）、制御部３４０は、フラグが「ＹＥＳ」のレコードのうち、制御順位が最も高いレコードを１つ選択する（ステップＳ１２４）。制御順位が最も高いとは、例えば、制御順位の値が最も小さい値であってもよいし、制御順位の値が最も大きい値であってもよい。
【０１０１】
そして、制御部３４０は、選択したレコードに含まれるファイル名によって示されるログファイルに対するログの出力を停止するよう、選択したレコードのフラグを「ＮＯ」に変更する（ステップＳ１２５）。
【０１０２】
そして、制御部３４０は、フラグを「ＮＯ」に変更したレコードの制御順位を、最下位に変更する（ステップＳ１２６）。例えば、制御順位の値が最も小さい値を有するレコードが、制御順位が最も高いレコードである場合、制御部３４０は、変更したレコードの制御順位の値を、最も大きい値に変更する。
【０１０３】
そして、ログ出力制御装置３００は、処理をステップＳ５１に戻し、再度リクエストの応答時間を測定する（ステップＳ５１）。
【０１０４】
その後、判定部１２０は、再度、ステップＳ５１で測定された応答時間が、閾値を超えているか否かを判定する（ステップＳ５２）。そして、応答時間が閾値を超えていないと判定されるまで、上述の処理を繰り返す。そして、応答時間が閾値を超えていないと判定される（ステップＳ５２にてＮＯ）と、ログ出力制御装置３００は、処理を終了する。
【０１０５】
以上のように、本実施の形態に係るログ出力制御装置３００の制御部３４０は、リクエストの応答時間が閾値を超えた場合に、ログファイルリスト３３１に記載されているログファイルに関連付けられたフラグを「ＮＯ」に変更する。これにより、出力部１５０は、フラグが「ＮＯ」であるログファイルに対するログの出力を停止する。このように、本実施の形態に係るログ出力制御装置３００によれば、リクエストの応答時間が閾値以下となるまで、逐次的にログの出力を停止することができる。
【０１０６】
これにより、本実施の形態に係るログ出力制御装置３００は、上述の第１の実施の形態と同様の効果に加え、ログの出力を停止するログファイルを最小限にとどめることができる。これにより、ログ出力制御装置３００は、ログを停止することに起因する影響をより小さくすることができる。
【０１０７】
＜第４の実施の形態＞
次に、本発明の第４の実施の形態について説明する。なお、説明の便宜上、前述した各実施の形態で説明した図面に含まれる部材と同じ機能を有する部材については、同じ符号を付し、その説明を省略する。
【０１０８】
図１３は本実施の形態に係るログ出力制御装置４００の機能構成の一例を示す機能ブロック図である。なお、本実施の形態に係るログ出力制御装置４００を含む情報処理装置のハードウェア構成は、図１に示す情報処理装置１と同様であるため、説明を省略する。
【０１０９】
図１３に示す通り、ログ出力制御装置４００は、測定部１１０、判定部１２０、記憶部３３０、制御部４４０、および出力部１５０を備える。本実施の形態に係るログ出力制御装置４００は、上述した第３の実施の形態に係るログ出力制御装置３００の制御部３４０に代えて制御部４４０を備える構成である。
【０１１０】
本実施の形態における制御部４４０と、上述した第３の実施の形態における制御部３４０とは、ログファイルリスト３３１に含まれる制御順位の決定方法がことなる。上述した第３の実施の形態では、上記制御順位は、例えば、ユーザによって指定される順位であるとして説明を行ったが、本実施の形態では、上記制御順位を制御部４４０が自動的に決定する方法について説明する。
【０１１１】
制御部４４０は、ログファイルリスト３３１にレコードを追加する際に、制御順位を決定する。制御部４４０は、ログファイルリスト３３１に新たにレコードを追加すると、該追加したレコードおよび該レコードを追加する前に既にログファイルリスト３３１に含まれるレコードの夫々に含まれるファイル名によって示されるログファイルの生成元を特定する。例えば、ログファイルがあるアプリケーションプログラムが実行されることにより生成される場合、制御部４４０は、このアプリケーションプログラムをログファイルの生成元として特定する。
【０１１２】
そして、制御部４４０は、ログファイルの生成元に応じて、ログファイルの重要度を算出する。制御部４４０は、例えば、ログファイルの生成元のＣＰＵ使用率等を重要度として用いる。ログファイルの生成元であるアプリケーションプログラムのＣＰＵ使用率が所定の値より高い場合、制御部４４０は、該アプリケーションプログラムの実行によって生成されるログファイルの重要度が高いと判断する。一方、ログファイルの生成元であるアプリケーションプログラムのＣＰＵ使用率が所定の値より低い場合、制御部４４０は、該アプリケーションプログラムの実行によって生成されるログファイルの重要度が低いと判断する。そして、制御部４４０は、判断結果に基づいた重要度を算出する。このとき、制御部４４０は、ＣＰＵ使用率を重要度としてもよい。
【０１１３】
そして、制御部４４０は、重要度に基づいて、重要度がより低いログファイルが、重要度がより高いログファイルより先にログの書き込みが停止されるように、制御順位を決定する。例えば、ＣＰＵ使用率を重要度とする場合、制御部４４０は、ＣＰＵ使用率順に、ログファイルリスト３３１のレコードを並び替え、ＣＰＵ使用率が低いものから順に、制御順位を決定する。その後、制御部４４０は、ログファイルリスト３３１に含まれるレコードに対して、制御順位を決定した制御順位に更新する。ログファイルリスト３３１に含まれるレコードが、新たに追加されたレコードの場合、制御部４４０は、上記レコードに、決定した制御順位を設定する。
【０１１４】
また、制御部４４０は、制御部３４０と同様の、ログファイルリスト３３１のレコードの変更処理を行う。
【０１１５】
次に、本実施の形態におけるログ出力制御装置４００の動作について説明する。図１４を参照して、制御順位の決定処理の流れについて説明する。図１４は、本実施の形態におけるログ出力制御装置４００のログファイルの制御順位の決定処理の流れの一例を示すフローチャートである。この処理は、上述したとおり、
ログファイルリスト３３１にレコードを追加する際に、実行される。
【０１１６】
図１４に示す通り、制御部４４０は、ログファイルリスト３３１に含まれるレコードの夫々に対し、ログファイルの生成元を特定する（ステップＳ１４１）。そして、制御部４４０は、特定したログファイルの生成元に応じて、該ログファイルの重要度を算出する（ステップＳ１４２）。そして、制御部４４０は、算出した重要度に応じて、制御順位を決定する（ステップＳ１４３）。
【０１１７】
以上により制御部４４０におけるログファイルの制御順位の決定処理を終了する。
【０１１８】
このように、ログ出力制御装置４００の制御順位の決定処理は、新たにログファイルリスト３３１にログファイルが登録される度に、ログファイルリスト３３１に含まれる全てのログファイルに対して、制御順位を決定しなおす。
【０１１９】
以上のように、本実施の形態に係るログ出力制御装置４００は、上述した第３の実施の形態に係るログ出力制御装置３００と同様の効果を得ることができる。また、ログ出力制御装置４００は、自動的に、ログファイルの制御順位を決定することができる。
【０１２０】
＜第５の実施の形態＞
次に、本発明の第５の実施の形態について説明する。なお、説明の便宜上、前述した各実施の形態で説明した図面に含まれる部材と同じ機能を有する部材については、同じ符号を付し、その説明を省略する。
【０１２１】
図１５は本実施の形態に係るログ出力制御装置５００の機能構成の一例を示す機能ブロック図である。なお、本実施の形態に係るログ出力制御装置５００を含む情報処理装置のハードウェア構成は、図１に示す情報処理装置１と同様であるため、説明を省略する。
【０１２２】
図１５に示す通り、ログ出力制御装置５００は、測定部１１０、判定部１２０、記憶部５３０、制御部５４０、および出力部５５０を備える。本実施の形態に係るログ出力制御装置５００は、上述した第１の実施の形態に係るログ出力制御装置１００の記憶部１３０に代えて、記憶部５３０を備え、制御部５４０に代えて制御部５４０を備え、出力部１５０に代えて出力部５５０を備える構成である。
【０１２３】
出力部５５０は、図１５に示す通り、複数のファイル処理部（５５０−１〜５５０−Ｍ（Ｍは任意の数））を含む。ファイル処理部（５５０−１〜５５０−Ｍ）は、出力部５５０がログファイルにログを書き込む際に実行する複数のプロセスの夫々を示している。出力部５５０がログファイルにログを書き込む際に実行するプロセスが５つの場合、Ｍは５となる。
【０１２４】
例えば、ファイル処理部５５０−１は、ログを出力するログファイルのファイルバッファのバッファサイズを変更する。ファイルバッファは、ログを出力する際に用いられるメモリ上の記録領域である。情報処理装置１は、ログ（ログデータ）をログファイルに出力する（書き込む）際に、出力するログをまず、ファイルバッファに格納する。情報処理装置１は、ログをファイルバッファに格納後、ログの出力指示を送信した送信元（ログ出力の要求元）にログの出力が完了した旨の通知を行う。ログの出力指示を送信した送信元とは、例えば、ＣＰＵ１０５によって実行されたアプリケーションプログラムである。
【０１２５】
情報処理装置１は、その後、リソースに空きが有るタイミングなど、任意のタイミングで、ファイルバッファに格納されたログを書き込んだログファイルを、ハードディスクなどの記憶媒体に出力する。または、既に該当するログファイルが記憶媒体に格納されている場合、情報処理装置１は、上記ログを、上記ログファイルに書き込む。
【０１２６】
ディスク入出力処理は、メモリ入出力処理と比較して、非常に時間のかかる処理である。そのため、情報処理装置１は、一旦メモリ上のファイルバッファにログを格納することによって、ログ出力の要求元（この場合、アプリケーションプログラム）における入出力処理の待ち時間を短縮している。このとき、情報処理装置１は、ログがファイルバッファに書き込めるように、ファイルバッファのサイズを変更する（大きくする）。これにより、情報処理装置１は、出力を要求されたログを、ファイルバッファに書き込み、この書き込みが終了した後に、ログ出力の要求元に対し、ログの出力が完了した旨の通知を行うことができる。これにより、情報処理装置１は、ログ出力の要求元における、入出力処理の待ち時間をより短くすることができる。これにより、情報処理装置１は、ＣＰＵの時間を他の作業、ここではリクエストの処理に、より多く振り分けることができる。
【０１２７】
また、例えば、ファイル処理部５５０−２は、ログファイルに出力するログデータの要約を作成し、その要約をログファイルに出力する。ログデータを要約することによって、情報処理装置１は、ログファイルに出力するデータ量を減らすことができる。これにより情報処理装置１は、入出力処理にかかる時間を短くすることができる。
【０１２８】
また、例えば、ファイル処理部５５０−Ｍは、前述した出力部１５０と同様に、ログファイルにログを出力する。
【０１２９】
以上のように、出力部５５０は、ログファイルにログを書き込むための複数のプロセスを実行するための、複数のファイル処理部（５５０−１〜５５０−Ｍ）を含む。
【０１３０】
記憶部５３０は、ログファイルリスト５３１を格納している。なお、記憶部５３０は、上述した第２の実施の形態における記憶部２３０と同様に、ログファイル推定ポリシー２３２を格納してもよい。
【０１３１】
記憶部５３０に格納されているログファイルリスト５３１について、図１６を参照して説明する。図１６は、記憶部５３０に格納されているログファイルリスト５３１の一例を示す図である。ログファイルリスト５３１には、図１６に示す通り、ファイル番号と、ファイル名と、制御順位と、処理状況とが含まれる。つまり、ログファイルリスト５３１は、上述のログファイルリスト３３１のフラグに代えて、処理状況を含むリストである。
【０１３２】
処理状況は、関連付けられたファイル名によって示されるログファイルのログ出力に対する複数のプロセスのうち、どのプロセスまでを終了したかを示す値である。上述したとおり、各プロセスを実行するのは、対応するファイル処理部であるため、処理状況は、プロセスを実行したファイル処理部を示しているとも言える。本実施の形態では、処理状況の値は、ファイル処理部の符号の末尾の番号を示す。処理状況の値が「１」の場合、ファイル処理部５５０−１で処理が実行されたことを示す。
【０１３３】
制御順位は、ログファイルリスト５３１が、ログファイルに対するログの書き込みを制御する順位を示す。本実施の形態では、制御順位は、ログファイルに対するログ出力に対応する複数のプロセスの何れかを実行させる順位である。
【０１３４】
制御部５４０は、ログファイルリスト５３１を管理する。制御部５４０は、判定部１２０の判定結果と、ログファイルリスト５３１に含まれる制御順位とに基づいて、ログ出力のプロセスを実行するログファイルのレコードを選択する。そして、該レコードに含まれる処理状況の値の次の値に対応するファイル処理部に対し、プロセスを実行する指示を送信する。
【０１３５】
そして、上記指示に基づいてファイル処理部（５５０−１〜５５０−Ｍ）の何れかでプロセスが実行されると、制御部５４０は、出力部５５０からプロセスが実行された旨の通知を受け取る。そして、制御部５４０は、プロセスを実行した対象となるログファイルのレコードにおける処理状況の値を、実行されたプロセス（ファイル処理部）を示す値に更新する。また、ログファイルに対するログ出力に対応する複数のプロセスが全て終了すると、制御部５４０は、制御順位を更新し、１１０に応答時間の測定を指示する。
【０１３６】
このように、制御部５４０は、判定結果に基づいて、ログ出力に対する複数のプロセスの何れかを示す情報を制御することにより、前記ログファイルに対するログの書き込みを制御する。
【０１３７】
次に、本実施の形態におけるログ出力制御装置５００の動作について説明する。図１７は、本実施の形態におけるログ出力制御装置５００の処理の流れの一例を示すフローチャートである。
【０１３８】
まず、測定部１１０が、リクエストの応答時間を測定する（ステップＳ１７１）。次に、判定部１２０が、ステップＳ１７１で測定された応答時間が、予め設定された閾値を超えているか否かを判定する（ステップＳ１７２）。閾値を超えていない場合（ステップＳ１７２にてＮＯ）、ログ出力制御装置５００は、処理を終了する。
【０１３９】
閾値を超えている場合（ステップＳ１７２にてＹＥＳ）、制御部５４０は、記憶部５３０に格納されているログファイルリスト５３１に、ログ出力に対するプロセスが終了していないログファイルのファイル名を含むレコードが有るか否かを確認する（ステップＳ１７３）。制御部５４０は、ログ出力に対するプロセスが終了していないログファイルのファイル名を含むレコードの有無を、ログファイルリスト５３１の処理状況を確認することによって、判定することができる。プロセスが全て終了したログファイルに対する処理状況の値は、本実施の形態では、ファイル処理部の末尾の番号である「Ｍ」となる。図１６に示すログファイルリスト５３１では、ファイル番号が１および４のレコードが、プロセスが全て終了したログファイルに対応するレコードである。よって、処理状況の値が全てのレコードにおいて「Ｍ」の場合、制御部５４０は、ログ出力に対するプロセスが終了していないログファイルのファイル名を含むレコードが無いと、判断する。
【０１４０】
ログ出力に対するプロセスが終了していないログファイルを含むレコードが無い場合（ステップＳ１７３にてＮＯ）、ログ出力制御装置５００は処理を終了する。
【０１４１】
ログ出力に対するプロセスが終了していないログファイルを含むレコードが有る場合（ステップＳ１７３にてＹＥＳ）、制御部５４０は、上記レコードのうち、制御順位が最も高いレコードを選択する（ステップＳ１７４）。制御順位が最も高いとは、例えば、制御順位の値が最も小さい値であってもよいし、制御順位の値が最も大きい値であってもよい。
【０１４２】
そして、選択したレコードに含まれる処理状況によって示される値の次の値に対応するファイル処理部は、対応するプロセスを実行する（ステップＳ１７５）。処理状況に何も値が入っていない、または、ゼロを示す値が含まれる場合、ファイル処理部５００−１が、対応するプロセスを実行する。図１６において、最も制御順位が高いレコードは、ファイル名が「ファイルＢ」のレコードである。このレコードの処理状況は「３」であるため、次の数「４」に対応するファイル処理部５００−４が、対応するプロセスを実行する。
【０１４３】
その後、制御部５４０は、選択されたレコードのログファイルに対するプロセスを全て実行したか否かを確認する（ステップＳ１７６）。つまり、制御部５４０は、ステップＳ１７５にてプロセスを実行した部材が、ファイル処理部５５０−Ｍか否かを確認する。そして、選択されたレコードのログファイルに対するプロセスを全て実行している場合（ステップＳ１７６にてＹＥＳ）、該レコードの制御順位を、最下位に変更する（ステップＳ１７７）。
【０１４４】
ステップＳ１７７終了後、または、選択されたレコードのログファイルに対するプロセスを全て実行していない場合（ステップＳ１７６にてＮＯ）、ログ出力制御装置５００は、処理をステップＳ１７１に戻し、再度リクエストの応答時間を測定する（ステップＳ１７１）。
【０１４５】
以上のように、本実施の形態に係るログ出力制御装置５００は、判定結果に基づいて、ログファイルにログを書き込むための複数のプロセスの何れかを示す情報を制御することにより、前記ログファイルに対するログの書き込みを制御する。ログファイルにログを書き込むための複数のプロセスとは、例えば、ファイルバッファにログを書き込む、ログファイルに、ログの要約を書き込む等である。
【０１４６】
そして、制御部５４０による制御内容に基づいて、該当するファイル処理部がプロセスを実行する。このように、ログ出力制御装置５００は、ログ出力を停止する代わりに、ログ出力に対する影響がより低いプロセスから順に実行するように構成されている。
【０１４７】
したがって、本実施の形態に係るログ出力制御装置５００は、第３の実施の形態におけるログ出力制御装置３００と比較して、ログを停止することに起因する影響をより小さくすることができる。
【０１４８】
＜第６の実施の形態＞
次に、本発明の第６の実施の形態について説明する。本実施の形態では、本発明の課題を解決する最小の構成について説明を行う。
【０１４９】
図１８は本実施の形態に係るログ出力制御装置１０の機能構成の一例を示す機能ブロック図である。なお、本実施の形態に係るログ出力制御装置１０を含む情報処理装置のハードウェア構成は、図１に示す情報処理装置１と同様であるため、説明を省略する。
【０１５０】
図１８に示す通り、ログ出力制御装置１０は、測定部１１、判定部１２、制御部１４、および出力部１５を備える。
【０１５１】
測定部１１は、上述した測定部１１０に相当する。測定部１１は、リクエストの応答時間を測定する。測定部１１は、測定した応答時間を、判定部１２に出力する。
【０１５２】
判定部１２は、上述した判定部１２０に相当する。判定部１２は、測定部１１から応答時間を受信する。そして、判定部１２は、応答時間が所定の閾値を超えているか否かを判定する。判定部１２は、判定結果を制御部１４に出力する。
【０１５３】
制御部１４は、上述した制御部１４０、制御部２４０、制御部３４０、制御部４４０、または、制御部５４０に相当する。制御部１４は、判定部１２から判定結果を受信する。制御部１４は、受信した判定結果に基づいて、ログファイルに対するログの書き込みを制御する。具体的には、制御部１４は、ログファイルに対するログの書き込みの可否を示す情報を制御する。制御部１４は、制御内容（ログの書き込みの可否）を示す情報を、出力部１５に出力する。
【０１５４】
出力部１５は、上述した出力部１５０または出力部５５０に相当する。出力部１５は、制御部１４から制御内容を示す情報を受信する。出力部１５は、受信した情報によって示される制御内容に基づいて、ログファイルにログを書き込む。具体的には、制御部１４から受信した情報が、あるログファイルに対するログの書き込みを許可しない（停止する）という制御内容を示す情報である場合、出力部１５は、対応するログファイルに対するログの出力を停止する。一方、制御部１４から受信した情報が、あるログファイルに対するログの書き込みを許可するという制御内容を示す情報である場合、出力部１５は、対応するログファイルに対してログを出力する。
【０１５５】
以上のように、本実施の形態に係るログ出力制御装置１０は、上述した各実施の形態に係るログ出力制御装置と同様に、より汎用性が高い、ログの出力の制御を行うことができる。
【０１５６】
（実行例）
以下に本発明の実行例について説明するが、本発明は、係る実行例に限定されない。本実行例では、第１の実施の形態に係るログ出力制御装置１００を含む情報処理装置１のＯＳとして、Ｌｉｎｕｘ（登録商標）を使用した。また、ログ出力制御装置１００の出力部１５０として、ｗｒｉｔｅシステムコールを使用した。さらに、測定部１１０を、ｎｅｔｉｆ＿ｒｅｃｅｉｖｅ＿ｓｋｂ関数内に構築した。Ｎｅｔｉｆ＿ｒｅｃｅｉｖｅ＿ｓｋｂは、ネットワークから到着したデータパケットが通過する関数の一つである。また、ｗｒｉｔｅシステムコールの引数として、ファイルディスクリプタ、ログファイルへ書き込むログデータが格納されたメモリ領域に対するポインタ、ログファイルへ書き込むログデータのデータサイズを設定した。また、ｗｒｉｔｅシステムコールの返り値は、実際にログファイルに書き込んだログデータのデータサイズ、または、書き込む予定のデータサイズとした。
【０１５７】
このようにして、ログ出力の制御を行った結果、出力部１５０は、実際にはログファイルにログを書き込まなかったが、書き込む予定のデータサイズを、出力した。
【０１５８】
本発明の各実施の形態に係るログ出力制御装置は、ＬＴＥ（Ｌｏｎｇ  Ｔｅｒｍ  Ｅｖｏｌｕｔｉｏｎ）などの電話交換機網の応答品質安定化といった用途に適用できる。また、Ｗｅｂサービスに関する応答性向上といった用途にも適用可能である。
【０１５９】
なお、上述した各実施の形態は、本発明の好適な実施の形態であり、上記各実施の形態にのみ本発明の範囲を限定するものではなく、本発明の要旨を逸脱しない範囲において当業者が上記各実施の形態の修正や代用を行い、種々の変更を施した形態を構築することが可能である。
【符号の説明】
【０１６０】
１    情報処理装置
１０    ログ出力制御装置
１１    測定部
１２    判定部
１４    制御部
１５    出力部
１０１    ＲＡＭ
１０２    ＲＯＭ
１０３    通信インタフェース
１０４    記憶装置
１０５    ＣＰＵ
１００    ログ出力制御装置
１１０    測定部
１２０    判定部
１３０    記憶部
１３１    ログファイルリスト
１４０    制御部
１５０    出力部
２００    ログ出力制御装置
２３０    記憶部
２３２    ログファイル推定ポリシー
２４０    制御部
３００    ログ出力制御装置
３３０    記憶部
３３１    ログファイルリスト
３４０    制御部
４００    ログ出力制御装置
４４０    制御部
５００    ログ出力制御装置
５３０    記憶部
５３１    ログファイルリスト
５４０    制御部
５５０    出力部
５５０−１〜５５０−Ｍ    ファイル処理部
【図１】
2017016173.tif 000003
【図２】
2017016173.tif 000004
【図３】
2017016173.tif 000005
【図４】
2017016173.tif 000006
【図５】
2017016173.tif 000007
【図６】
2017016173.tif 000008
【図７】
2017016173.tif 000009
【図８】
2017016173.tif 000010
【図９】
2017016173.tif 000011
【図１０】
2017016173.tif 000012
【図１１】
2017016173.tif 000013
【図１２】
2017016173.tif 000014
【図１３】
2017016173.tif 000015
【図１４】
2017016173.tif 000016
【図１５】
2017016173.tif 000017
【図１６】
2017016173.tif 000018
【図１７】
2017016173.tif 000019
【図１８】
2017016173.tif 000020