(57)【要約】【課題】複数のデバイスドライバが、交互にログを出力したような場合であっても、圧縮効率を低下させない。【解決手段】複数のデバイスドライバから得た情報の記録時の情報圧縮装置が前記デバイスドライバ毎にそれぞれ、前記デバイスドライバから出力されたログを受け付ける。受け付けた前記ログの出力時刻を確認し、今回受け付けたログの出力時刻と、前回受け付けたログの出力時刻との時間間隔が予め定められている繰り返し判定時間の範囲内に入っているかを判定し、前記範囲内に入っていると判定できた場合は前記今回受け付けたログの内容と前記前回受け付けたログの内容を比較し、当該比較の結果、同一の内容であった場合は繰り返し回数を１つ増加させ、当該繰り返し回数とログの情報とを出力する。【選択図】図１
2010277310.tif 000002
【特許請求の範囲】
【請求項１】
複数のデバイスドライバから得た情報の記録時の情報圧縮装置において、
前記デバイスドライバから出力されたログを受け付ける情報キューと、
前記情報キューにおいて受け付けた前記ログの出力時刻を確認し、今回受け付けたログの出力時刻と、前回受け付けたログの出力時刻との時間間隔が予め定められている繰り返し判定時間の範囲内に入っているかを判定し、前記範囲内に入っていると判定できた場合は前記今回受け付けたログの内容と前記前回受け付けたログの内容を比較し、当該比較の結果、同一の内容であった場合は繰り返し回数を１つ増加させ、当該繰り返し回数とログの情報とを出力するログ圧縮手段と、
を前記デバイスドライバ毎にそれぞれ備えていることを特徴とする情報圧縮装置。
【請求項２】
請求項１に記載の情報圧縮装置において、
前記ログ圧縮手段における前記出力は、前記判定の結果が前記範囲内に入っていない場合、或いは、前記比較の結果、同一の内容でなかった場合、の何れかの場合であって前記繰り返し回数が２以上の場合に行われることを特徴とする情報圧縮装置。
【請求項３】
請求項１又は２に記載の情報圧縮装置において、
前記繰り返し判定時間を用いてタイマーのカウント上限値を初期化し、当該タイマーのカウントを開始し、開始後は、終了要求があるまでは、当該タイマーのカウントアップを行い、当該タイマーが上限に達した場合に、前記ログ圧縮手段に前記出力を行わせるためのログを出力するタイマー処理手段と、
前記情報キューにおいて受け付けた前記ログが、前記デバイスドライバから出力されたログか、前記タイマー処理手段から出力されたログかを判断する出力判断手段と、
を前記デバイスドライバ毎にそれぞれ更に備え、
前記出力判断手段が前記デバイスドライバから出力されたログと判断した場合にも前記ログ圧縮手段における前記出力が行われることを特徴とする情報圧縮装置。
【請求項４】
請求項１乃至３の何れか１項に記載の情報圧縮装置において、
前記受け付けたログの内容と、前記ログの出力時刻のリストと、を保存する情報保存手段を更に備え、前記ログ圧縮手段における前記出力の際には、前記出力時刻のリストの全ての要素のデータを更に出力することを特徴とする情報圧縮装置。
【請求項５】
請求項１乃至４の何れか１項に記載の情報圧縮装置において、
前記複数のデバイスドライバから前記ログを受け付ける情報受信キューと、
前記情報受信キューが受け付けた前記ログの出力元が前記複数のデバイスドライバの中のどのドライバであるかを特定し、当該特定したデバイスドライバに対応する前記情報キューに前記ログを出力する制御手段と、
を更に備えていることを特徴とする情報圧縮装置。
【請求項６】
複数のデバイスドライバから得た情報の記録時の情報圧縮方法において、
前記デバイスドライバから出力されたログを受け付ける情報キューを用意するステップと、
前記情報キューにおいて受け付けた前記ログの出力時刻を確認し、今回受け付けたログの出力時刻と、前回受け付けたログの出力時刻との時間間隔が予め定められている繰り返し判定時間の範囲内に入っているかを判定し、前記範囲内に入っていると判定できた場合は前記今回受け付けたログの内容と前記前回受け付けたログの内容を比較し、当該比較の結果、同一の内容であった場合は繰り返し回数を１つ増加させ、当該繰り返し回数とログの情報とを出力するログ圧縮ステップと、
を前記デバイスドライバ毎にそれぞれ行うことを特徴とする情報圧縮方法。
【請求項７】
請求項６に記載の情報圧縮方法において、
前記ログ圧縮ステップにおける前記出力は、前記判定の結果が前記範囲内に入っていない場合、或いは、前記比較の結果、同一の内容でなかった場合、の何れかの場合であって前記繰り返し回数が２以上の場合に行われることを特徴とする情報圧縮方法。
【請求項８】
請求項６又は７に記載の情報圧縮方法において、
前記繰り返し判定時間を用いてタイマーのカウント上限値を初期化し、当該タイマーのカウントを開始し、開始後は、終了要求があるまでは、当該タイマーのカウントアップを行い、当該タイマーが上限に達した場合に、前記ログ圧縮ステップに前記出力を行わせるためのログを出力するタイマー処理ステップと、
前記情報キューにおいて受け付けた前記ログが、前記デバイスドライバから出力されたログか、前記タイマー処理ステップから出力されたログかを判断する出力判断ステップと、
を前記デバイスドライバ毎にそれぞれ更に行い、
前記出力判断ステップが前記デバイスドライバから出力されたログと判断した場合にも前記ログ圧縮ステップにおける前記出力が行われることを特徴とする情報圧縮方法。
【請求項９】
請求項６乃至８の何れか１項に記載の情報圧縮方法において、
前記受け付けたログの内容と、前記ログの出力時刻のリストと、を保存する情報保存ステップを更に備え、前記ログ圧縮ステップにおける前記出力の際には、前記出力時刻のリストの全ての要素のデータを更に出力することを特徴とする情報圧縮方法。
【請求項１０】
請求項６乃至９の何れか１項に記載の情報圧縮方法において、
前記複数のデバイスドライバから前記ログを受け付ける情報受信キューを用意するステップと、
前記情報受信キューが受け付けた前記ログの出力元が前記複数のデバイスドライバの中のどのドライバであるかを特定し、当該特定したデバイスドライバに対応する前記情報キューに前記ログを出力する制御ステップと、
を更に備えていることを特徴とする情報圧縮方法。
【請求項１１】
複数のデバイスドライバから得た情報の記録時の情報圧縮装置に搭載される情報圧縮プログラムにおいて、
前記デバイスドライバから出力されたログを受け付ける情報キューと、
前記情報キューにおいて受け付けた前記ログの出力時刻を確認し、今回受け付けたログの出力時刻と、前回受け付けたログの出力時刻との時間間隔が予め定められている繰り返し判定時間の範囲内に入っているかを判定し、前記範囲内に入っていると判定できた場合は前記今回受け付けたログの内容と前記前回受け付けたログの内容を比較し、当該比較の結果、同一の内容であった場合は繰り返し回数を１つ増加させ、当該繰り返し回数とログの情報とを出力するログ圧縮手段と、
を前記デバイスドライバ毎にそれぞれ備えている情報圧縮装置としてコンピュータを機能させるための情報圧縮プログラム。
【請求項１２】
請求項１１に記載の情報圧縮プログラムにおいて、
前記ログ圧縮手段における前記出力は、前記判定の結果が前記範囲内に入っていない場合、或いは、前記比較の結果、同一の内容でなかった場合、の何れかの場合であって前記繰り返し回数が２以上の場合に行われることを特徴とする情報圧縮プログラム。
【請求項１３】
請求項１１又は１２に記載の情報圧縮プログラムにおいて、
前記繰り返し判定時間を用いてタイマーのカウント上限値を初期化し、当該タイマーのカウントを開始し、開始後は、終了要求があるまでは、当該タイマーのカウントアップを行い、当該タイマーが上限に達した場合に、前記ログ圧縮手段に前記出力を行わせるためのログを出力するタイマー処理手段と、
前記情報キューにおいて受け付けた前記ログが、前記デバイスドライバから出力されたログか、前記タイマー処理手段から出力されたログかを判断する出力判断手段と、
を前記デバイスドライバ毎にそれぞれ更に備え、
前記出力判断手段が前記デバイスドライバから出力されたログと判断した場合にも前記ログ圧縮手段における前記出力が行われることを特徴とする情報圧縮プログラム。
【請求項１４】
請求項１１乃至１３の何れか１項に記載の情報圧縮プログラムにおいて、
前記受け付けたログの内容と、前記ログの出力時刻のリストと、を保存する情報保存手段を更に備え、前記ログ圧縮手段における前記出力の際には、前記出力時刻のリストの全ての要素のデータを更に出力することを特徴とする情報圧縮プログラム。
【請求項１５】
請求項１１乃至１４の何れか１項に記載の情報圧縮プログラムにおいて、
前記複数のデバイスドライバから前記ログを受け付ける情報受信キューと、
前記情報受信キューが受け付けた前記ログの出力元が前記複数のデバイスドライバの中のどのドライバであるかを特定し、当該特定したデバイスドライバに対応する前記情報キューに前記ログを出力する制御手段と、
を更に備えていることを特徴とする情報圧縮プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ハードウェアデバイスを制御するデバイスドライバが動作の記録のために出力する情報（以下、この情報のことを適宜「ログ」と記載する）をファイルに記録する際のログの圧縮に関する。
【背景技術】
【０００２】
Ｌｉｎｕｘ（登録商標）ＯＳにおいては、ハードウェアの動作で問題が発生した場合等に備え、ハードウェアを制御するデバイスドライバが出力したログを、ログファイル等へ記録している。
【０００３】
このログファイルの情報は、デバイスドライバの動作記録として記録されており、問題の原因究明に有益なものである。もっとも、運転時間の長さに伴い、ログファイルのサイズが大きくなってしまう。また、発生した問題の内容によっては、その問題が解決するまで同じログが何度も繰り返し出力され続け、ログファイルのサイズが加速度的に大きくなる場合がある。
【０００４】
このような状況において、ディスク容量を少なくするため、ＬｉｎｕｘＯＳでは、同一内容のログが連続して出力された場合は、繰り返しの都度同じログを記録するのではなく、ログ繰り返しの回数を出力することで、ログを圧縮して出力するという処理を行っている。
【０００５】
このような、ログの圧縮に関する技術としては、例えば特許文献１に記載の技術が挙げられる。特許文献１に記載の技術は、監視用のコンピュータと運転制御用のコンピュータとを通信手段を介して接続し、遠隔監視遠隔操作により装置、機械、プラントなどの運転制御に関する技術である。前記監視用のコンピュータは、前記運転制御用のコンピュータからモニタリングデータを取得し、かつ、その取得したモニタリングデータを監視することにより、前記運転制御用のコンピュータを介して、装置などの運転を遠隔制御することができる。そして、膨大な量のモニタリングデータを圧縮して集積することにより、チェックするモニタリングデータの量を減らすことができ、モニタリングデータを容易にチェックすることができる。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開２００２−２９７２３０号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
しかし、ＬｉｎｕｘＯＳにおいては、現実には監視対象となるデバイスドライバが複数あり、そのそれぞれが並行してログ出力を行っている。そのため、それぞれのデバイスドライバが交互にログを出力したような場合には、或るデバイスドライバが同一のログを連続して出力していたとしても、他のデバイスドライバが同時にログを出力するためにファイル上では情報が混ざりあうため、同一内容のログが連続して出力されたようには見えず、同一のログを何度も記録してしまう。そしてこれにより、連続出力されたログの圧縮効果が小さいという問題があった。
【０００８】
そこで、本発明は複数のデバイスドライバが、交互にログを出力したような場合であっても、圧縮効率を低下させず、長時間動き続けるシステムにおいて、最小のディスク使用量でデバイスドライバの動作を記録することが可能な、複数デバイスドライバから得た情報の記録時の情報圧縮方法、情報圧縮装置及び情報圧縮プログラムを提供することを目的とする。
【課題を解決するための手段】
【０００９】
本発明の第１の観点によれば、複数のデバイスドライバから得た情報の記録時の情報圧縮装置において、前記デバイスドライバから出力されたログを受け付ける情報キューと、前記情報キューにおいて受け付けた前記ログの出力時刻を確認し、今回受け付けたログの出力時刻と、前回受け付けたログの出力時刻との時間間隔が予め定められている繰り返し判定時間の範囲内に入っているかを判定し、前記範囲内に入っていると判定できた場合は前記今回受け付けたログの内容と前記前回受け付けたログの内容を比較し、当該比較の結果、同一の内容であった場合は繰り返し回数を１つ増加させ、当該繰り返し回数とログの情報とを出力するログ圧縮手段と、を前記デバイスドライバ毎にそれぞれ備えていることを特徴とする情報圧縮装置が提供される。
【００１０】
本発明の第２の観点によれば、複数のデバイスドライバから得た情報の記録時の情報圧縮方法において、前記デバイスドライバから出力されたログを受け付ける情報キューを用意するステップと、前記情報キューにおいて受け付けた前記ログの出力時刻を確認し、今回受け付けたログの出力時刻と、前回受け付けたログの出力時刻との時間間隔が予め定められている繰り返し判定時間の範囲内に入っているかを判定し、前記範囲内に入っていると判定できた場合は前記今回受け付けたログの内容と前記前回受け付けたログの内容を比較し、当該比較の結果、同一の内容であった場合は繰り返し回数を１つ増加させ、当該繰り返し回数とログの情報とを出力するログ圧縮ステップと、を前記デバイスドライバ毎にそれぞれ行うことを特徴とする情報圧縮方法が提供される。
【００１１】
本発明の第３の観点によれば、複数のデバイスドライバから得た情報の記録時の情報圧縮装置に搭載される情報圧縮プログラムにおいて、前記デバイスドライバから出力されたログを受け付ける情報キューと、前記情報キューにおいて受け付けた前記ログの出力時刻を確認し、今回受け付けたログの出力時刻と、前回受け付けたログの出力時刻との時間間隔が予め定められている繰り返し判定時間の範囲内に入っているかを判定し、前記範囲内に入っていると判定できた場合は前記今回受け付けたログの内容と前記前回受け付けたログの内容を比較し、当該比較の結果、同一の内容であった場合は繰り返し回数を１つ増加させ、当該繰り返し回数とログの情報とを出力するログ圧縮手段と、を前記デバイスドライバ毎にそれぞれ備えている情報圧縮装置としてコンピュータを機能させるための情報圧縮プログラムが提供される。
【発明の効果】
【００１２】
本発明によれば、過去のログの情報を一時保持することで、繰り返し出力されているかを確認できることから、同一内容のログ情報を圧縮することが可能となる。
【図面の簡単な説明】
【００１３】
【図１】本発明の第１の実施形態の基本的構成を表す図である。
【図２】制御部２２０における処理について示す図である。
【図３−１】ログ圧縮部２３２Ａにおける処理について示す図（１／３）である。
【図３−２】ログ圧縮部２３２Ａにおける処理について示す図（２／３）である。
【図３−３】ログ圧縮部２３２Ａにおける処理について示す図（３／３）である。
【図４】本発明の第２の実施形態の基本的構成を表す図である。
【図５】情報圧縮部２３４Ａにおける処理について示す図である。
【図６】タイマー情報出力判断部２３５Ａにおける処理について示す図である。
【図７】Ｄｒｉｖｅｒ−Ａ用タイマー処理部２５１Ａにおける処理について示す図である。
【図８】ログファイル４０２への出力の条件について示す表（１／２）である。
【図９】ログファイル４０２への出力の条件について示す表（２／２）である。
【発明を実施するための形態】
【００１４】
本発明の実施形態は、複数のデバイスドライバが並行してログ出力を行うことで、連続出力されたログの圧縮効果が小さくなる問題について、全てのデバイスドライバで連続性を確認するのではなく、個々のデバイスドライバ単位で連続してログが出力されているかを確認することで、問題を解決するというものである。そして、その際、一定時間に区切って、出力される情報が連続しているかを確認することで、ログが連続して出力し始めた箇所が不明確になることを抑止する。
【００１５】
ハードウェアデバイスを制御するデバイスドライバが動作の記録のために出力する情報（上述したように、この情報のことを適宜「ログ」と記載する。）をファイルに記録する際、重複するログを統合し、差異のあるログだけを記録することで、ログの記録のために必要な資源を最小に留める。その際、複数のデバイスドライバからの情報が混在していたとしても、デバイスドライバを区別し、ログの圧縮を行うことを特徴とする。
【００１６】
次に、本発明の第１の実施形態について図面を用いて詳細に説明する。図１を参照すると本発明の第１の実施形態は複数のデバイスドライバ並びにＬｉｎｕｘＯＳ１００を有する。
【００１７】
各デバイスドライバは、ハードウェアデバイスを制御するデバイスドライバである。デバイスドライバとしてはＤｒｉｖｅｒ−Ａ３００Ａ及びＤｒｉｖｅｒ−Ｂ３００Ｂを図示する。加えて第１の実施形態はＤｒｉｖｅｒ群３１０を有している。Ｄｒｉｖｅｒ群３１０には、複数のデバイスドライバが存在する（図示を省略する。）。また、Ｄｒｉｖｅｒ−ｎ３００ｎを図示する。この点、本発明におけるデバイスドライバの数は特に限定されるものではなく、任意の数のデバイスドライバを対象とすることが可能である。
【００１８】
各デバイスドライバは、デバイスに関するログを、ＬｉｎｕｘＯＳ１００の機能により、ログファイル４０２に出力する。
【００１９】
加えて、第１の実施形態は図１に示すように各デバイスドライバと、ＬｉｎｕｘＯＳ１００の間に、ログ圧縮層２００が追加されている。
【００２０】
ログ圧縮層２００は、制御部２２０、情報受信キュー２１０、Ｄｒｉｖｅｒ−Ａ用構成要素２３０Ａ、Ｄｒｉｖｅｒ−Ｂ３００Ｂ用構成要素２３０Ｂ及びＤｒｉｖｅｒ−ｎ用構成要素２３０ｎを有する。
【００２１】
制御部２２０は、デバイスドライバからのログの取得、各デバイスドライバ用の処理部分への振り分けを行う。
【００２２】
また、ログ圧縮層２００の動作を制御するための設定情報を、制御部２２０が参照する設定ファイル４１０としてディスク上に持つ。設定ファイル４１０には、同一情報が出力されているかを確認するための期間（例：１０秒）として、繰り返し判定時間４０３、ログの出力元を、ログの内容から判断するための識別子（例："Driver-A:"）として、識別キー４０４を、登録する。同一デバイスドライバから、同一ログが繰り返し出力され続けている場合には、繰り返し判定時間４０３は、ログファイル４０２への出力間隔となる。
【００２３】
情報受信キュー２１０は、各デバイスドライバからログを受け取り、受け取ったログを貯めておくキューの役割をする。
【００２４】
実際にログの圧縮処理を行う構成要素は、デバイスドライバ毎に存在する。第１の実施形態では、Ｄｒｉｖｅｒ−Ａ用構成要素２３０Ａ、Ｄｒｉｖｅｒ−Ｂ３００Ｂ用構成要素２３０Ｂ及びＤｒｉｖｅｒ−ｎ用構成要素２３０ｎを図示する。また、上述したように本発明におけるデバイスドライバの数は特に限定されるものではないため、デバイスドライバに対応する構成要素の数も限定されるものではない。
【００２５】
各構成要素２３０Ａの構成を説明するにあたり、Ｄｒｉｖｅｒ−Ａ用構成要素２３０Ａを例にして説明をする。なお例えばｎ個のデバイスドライバが存在する場合、Ｄｒｉｖｅｒ−Ａ用の構成要素と同様の構成要素をＤｒｉｖｅｒＢ３００Ｂ〜Ｄｒｉｖｅｒ−ｎ３００ｎ用に持つことになる。この点、これら各構成要素の構成はＤｒｉｖｅｒ−Ａ用構成要素２３０Ａと同様であるため説明を省略する。
【００２６】
Ｄｒｉｖｅｒ−Ａ用構成要素２３０Ａは、情報キュー２３１Ａ、ログ圧縮部２３２Ａ及び情報保存部２３３Ａを有する。これら各部は、以下に述べるような機能を有する。
【００２７】
Ｄｒｉｖｅｒ−Ａ３００Ａが出力したログの圧縮は、ログ圧縮部２３２Ａで行なわれる。ログ圧縮部２３２Ａは、制御部２２０から、情報キュー２３１Ａを介してＤｒｉｖｅｒ−Ａから出力されたログを受け取る。
【００２８】
情報保存部２３３Ａは、デバイスドライバの出力したログを保存する出力情報４０８Ａ、出力時刻を保存する出力時刻情報リスト４０７Ａ、の領域を持つ。出力時刻情報リスト４０７Ａはリスト構造で繰り返しのログとしてカウントされているログの出力時刻を要素として保存する。このリストの最初の要素が、繰り返し判定のための基準時間となる。
【００２９】
ログ圧縮部２３２Ａは、同一ログが出力されているかの確認期間の情報として、繰り返し判定時間情報４０５Ａを保持している。また、繰り返し判定時間情報４０５Ａは、初期化時に、繰り返し判定時間４０３に設定される。
【００３０】
更に、ログ圧縮部２３２Ａは、同一ログの繰り返し回数をカウント、保持する領域として、繰り返し回数情報４０６Ａを持ち、初期化時に０に設定される。
【００３１】
［動作の説明］
実施例の動作について、図１、図２、図３−１、図３−２、図３−３、図８及び図９を用いて説明する。
【００３２】
なお、デバイスドライバ毎に存在する処理の内容は、全て共通である。そのため、以下ではＤｒｉｖｅｒ−Ａについての処理のみ記載し、他のデバイスドライバに関する処理については説明を省略する。
【００３３】
図２が制御部２２０における処理を示す図である。また、図３−１、３−２、３−３がログ圧縮部２３２Ａにおける処理を示す図である。
【００３４】
制御部２２０の処理について、図２及び図３−１を参照し、説明する。
【００３５】
１．設定ファイル４１０に、予め以下の情報を設定しておく。
【００３６】
ログファイル４０２への出力の最長間隔として適切な時間を、繰り返し判定時間４０３として登録しておく。出力の最長間隔としては例えば１０秒とすることが考えられる。もっとも、これはあくまで例示であり、第１の実施形態が採用できる最長間隔を限定するものではない。加えて、ログの出力元を識別するためのキーである識別キー４０４として、適切な文字列を登録しておく。今回は、文字列として"Driver-A"を用いるものとする。この文字列もあくまで例示であり、第１の実施形態が採用できる文字列を限定するものではない。
【００３７】
２．制御部２２０は、識別キー４０４の情報を基に対象とするデバイスドライバを判断し、必要なデバイスドライバ用のログ圧縮部の生成を行う（ステップＳ５０１）。今回は、Ｄｒｉｖｅｒ−Ａ３００Ａ用に、ログ圧縮部２３２Ａが生成される。
【００３８】
３．ステップＳ５０１で生成されたログ圧縮部は、必要な情報の初期化を行い。その後ログ登録待ち状態となる。次に、この点について図３−１を参照し、説明する。
【００３９】
ログ圧縮部２３２Ａは、出力時刻情報リスト４０７Ａ、出力情報４０８Ａ、繰り返し判定時間情報４０５Ａ、繰り返し回数情報４０６Ａを初期化する（ステップＳ６０１）。初期化完了後ログ圧縮部２３２Ａは、情報キュー２３１Ａへのログ登録待ち状態となる（ステップＳ６０２〜６０３）。
【００４０】
４．各デバイスドライバが出力するログは、全デバイスドライバで共通の情報受信キューである情報受信キュー２１０で受け取る。そのために、制御部２２０は、情報受信キュー２１０をチェックする（ステップＳ５０２）。そして、情報受信キュー２１０にデバイスドライバからのログが登録されると（ステップＳ５０３においてＹｅｓ）、制御部２２０が、登録されたログを受取る。
【００４１】
５．制御部２２０は、識別キー４０４の情報を基に、ログの出力元を判断する（ステップＳ５０４）。そして、出力元に対応した情報キュー（今回は、情報キュー２３１Ａ、２３１Ｂ、２３１ｎについての動作を図示する。）に情報を登録する（ステップＳ５０５Ａ、ステップＳ５０５Ｂ及びステップＳ５０５ｎ）。
【００４２】
今回は、Ｄｒｉｖｅｒ−Ａがログを出力したものとする。そのためこのＤｒｉｖｅｒ−Ａが出力したログが、情報キュー２３１Ａに登録される（ステップＳ５０５Ａ）。そして登録があると、ログ待ち状態であるログ圧縮部２３２Ａはログを取り出し、処理を開始する（ステップＳ６０２、６０３においてＹｅｓ）。
【００４３】
ログを取得したログ圧縮部２３２Ａでは、取得したログ及び情報保存部２３３Ａに保存している情報、並びに、Ｄｒｉｖｅｒ−Ａ繰り返し判定時間情報４０５Ａ、繰り返し回数情報４０６Ａに応じて、ログファイル４０２への出力の実施、未実施を判断し、同じログが繰り返されることによるログファイル４０２の拡大を抑止する。ログファイル４０２への出力の条件について、その一例を図８及び図９に記す。なお、図８及び図９は、文字の大きさの便宜上２つの表として分割されているが、その内容は連続しており全体として１つの表であるものとする。
【００４４】
ログ圧縮部２３２Ａの処理の流れは、図３−１が全体の流れ、図３−２が情報保存部２３３Ａに保存している情報の出力のための“繰り返し情報出力処理”、図３−３が新たに情報保存部２３３Ａに情報を登録するための“新規情報登録処理”の処理の流れを表している。
なお、図３−２が示す繰り返し情報出力処理は、図３−１におけるステップＳ６０９、ステップＳ６１２に相当する。また、新規情報登録処理は、図３−１におけるステップＳ６１０、ステップＳ６１１及びステップＳ６１３に相当する。
【００４５】
図３−１の処理から呼び出される、繰り返し情報出力処理について図３−２を参照し、説明する。
【００４６】
１．繰り返し回数情報４０６Ａを確認し（ステップＳ６２１）、Ｄｒｉｖｅｒ−Ａから繰り返し、同一内容のログが出力されていたか判定する。（ステップＳ６２２）。
【００４７】
２．繰り返し同一のログがＤｒｉｖｅｒ−Ａから出力されていた場合（繰り返し回数情報４０６Ａの値が２以上の場合：ステップＳ６２２においてＹｅｓ）、Ｄｒｉｖｅｒ−Ａから繰り返し同一のログが出力されていたことを示すメッセージを、ログファイル４０２へ出力する（ステップＳ６２３）。出力の際には、繰り返し回数情報４０６Ａのデータ、および出力時刻情報リスト４０７Ａの全ての要素のデータを付加して出力する。
【００４８】
３．ステップＳ６２３における出力の後に、情報保存部２３３Ａおよび繰り返し回数情報４０６Ａの情報を初期化する（ステップＳ６２４〜ステップＳ６２６）。
【００４９】
一方、ステップＳ６２１およびステップＳ６２２の確認で、Ｄｒｉｖｅｒ−Ａが同一のログを繰り返し出力していなかった場合（繰り返し回数情報４０６Ａが１以下であった場合：ステップＳ６２２においてＮｏ）には、ログファイル４０２への出力は行わず、情報保存部２３３Ａおよび繰り返し回数情報４０６Ａの初期化のみを実施する（ステップＳ６２４〜ステップＳ６２６）。初期化完了後、呼び出し元に戻る。
【００５０】
繰り返し情報出力処理と同様に、図３−１の処理から呼び出される、新規情報登録処理について図３−３を参照し、説明する。
【００５１】
１．新しい内容のログ取得となるため、繰り返し回数情報４０６Ａを１に更新する。（ステップＳ６３１）。
【００５２】
２．取得したログの内容を出力情報４０８Ａに保存する。この情報が同一のログかどうかを判断する基準となる。（ステップＳ６３２）。
【００５３】
３．取得したログの出力時刻を、Ｄｒｉｖｅｒ−Ａ出力時刻情報リスト４０７Ａの先頭の要素として保存する。この情報が、繰り返し判定時間内に入っているかの確認の際の、基準となる。（ステップＳ６３３）。
【００５４】
４．新しい内容のログ取得であるため、ログファイル４０２へ情報を出力した後、呼び出し元に戻る。（ステップＳ６３４）。
【００５５】
図３−２、図３−１を参照して上述した繰り返し情報出力処理および新規情報登録処理を利用して動作する、ログ圧縮部２３２Ａの動作について、図３−１を参照し説明する。ここでは、制御部２２０から、情報キュー２３１Ａ経由でＤｒｉｖｅｒ−Ａが出力したログを取得した後の流れについて説明する。なお、図３−２に示すようにこのログを情報ｉ−１４０１と表記する。
【００５６】
１．初期化直後で、出力情報４０８Ａに情報が何も登録されていない場合（ステップＳ６０４においてＮｏ）、無条件に新規情報登録処理を実行する。具体的には、Ｄｒｉｖｅｒ−Ａからのログ（情報ｉ−１４０１）の情報保存部２３３Ａへの保存、およびログファイル４０２への出力を行う。その後、次のログ待ち状態へ戻る（ステップＳ６１１）。
【００５７】
２．Ｄｒｉｖｅｒ−Ａからログ（情報ｉ−１４０１）を取得する以前に、既にＤｒｉｖｅｒ−Ａ３００Ａからログを取得している場合（ステップＳ６０４においてＹｅｓ）には、情報保存部２３３Ａに保存してある情報、および繰り返し回数情報４０６Ａを参照し、以下の条件でログファイル４０２への出力を制御する。
【００５８】
・取得したログの出力時刻が、出力情報４０８Ａに保存されているログの出力時刻から、繰り返し判定時間４０３内に入っており、かつ、ログの内容が、出力情報４０８Ａと同一の場合は、繰り返しの情報を更新するのみで、ログファイル４０２へは出力しない。
【００５９】
・上記以外の場合、つまり、取得したログの出力時刻が、出力情報４０８Ａに保存されているログの出力時刻から、繰り返し判定時間４０３の範囲外、または、範囲内であっても、出力情報４０８Ａとログの内容が異なる場合には、繰り返し回数に応じて情報保存部２３３Ａに保存してある情報およびＤｒｉｖｅｒ−Ａ繰り返し回数情報５をログファイル４０２へ出力、かつ、取得したログの内容もログファイル４０２へと出力する。
【００６０】
次に、上記の条件に沿ってログファイル４０２への出力を行うための、ステップＳ６０５以下の動作を具体的に説明する。
【００６１】
３．出力時刻情報リスト４０７Ａの先頭の要素に保存されている時刻から繰り返し判定時間情報４０５Ａの範囲内に入っているかを確認する（ステップＳ６０５、６０６）。
【００６２】
４．範囲外の場合（ステップＳ６０６においてＮｏ）、繰り返し出力されているかのチェックの対象外となるため、情報ｉ−１４０１の内容については関係なく、繰り返し情報処理および新規情報登録処理を実施し、次のログ取得に戻る。（ステップＳ６１２、６１３）。
【００６３】
５．一方、範囲内に入っている場合は（ステップＳ６０６においてＹｅｓ）、同じログが繰り返し出力されているかをチェックする（ステップＳ６０７、６０８）。この時、出力情報４０８Ａと異なる場合には（ステップＳ６０８においてＮｏ）、上述のステップＳ６０６においてＮｏの場合と同様に、繰り返し情報処理および新規情報登録処理を実施し、次のログ取得に戻る（ステップＳ６０９、６１０）。
【００６４】
６．一方、取得したログ（情報ｉ−１４０１）の内容と、出力情報４０８Ａが同一であれば（ステップＳ６０８においてＹｅｓ）、繰り返し回数情報４０６Ａの値を１加算し（ステップＳ６１４）、情報ｉ−１４０１の出力時刻を出力時刻情報リスト４０７Ａの最後の要素として追加するのみで、次のログ取得に戻る（ステップＳ６１５）。
【００６５】
これらの流れの動作を、Ｄｒｉｖｅｒ−Ａ３００Ａを含むｎ個のデバイスドライバ、それぞれから取得したログについて、出力元に応じて処理を行うことで、複数のデバイスドライバからのログが混在した場合であっても、繰り返し同じログがログファイル４０２に記録されることによるファイルサイズの拡大を抑止する。
【００６６】
以上説明した、第１の実施形態は以下のような効果を奏する。
【００６７】
第１の効果は、同一内容のログ情報を圧縮できることにある。
【００６８】
その理由は、過去のログの情報を一時保持することで、繰り返し出力されているかを確認するためである。
【００６９】
第２の効果は、複数のデバイスドライバが、各々で同一のログを繰り返し出力し、混在している場合でも、デバイスドライバ毎にログ情報を圧縮できることにある。
【００７０】
その理由は、デバイスドライバ毎に過去のログの情報を一時保持し、繰り返し出力されているかの確認を実施するためである。
【００７１】
第３の効果は、ログ情報が圧縮された場合でも、元のログの情報を復元することができることにある。
【００７２】
その理由は、情報の内容とは別に、出力時刻情報を保持し、ログファイルへ出力しているためである。
【００７３】
次に、本発明の第１の実施形態の変形例である第２の実施形態の構成について図４に記す。
【００７４】
以下では、図１との差異について説明を行う。説明を行っている部分以外については、図１の構成及び動作と同一であるため図示及び説明を省略する。
【００７５】
図４に示す構成は、図１に示した構成と比較し、各デバイスドライバ用のタイマー処理部２５０と、タイマー情報出力判断部２３５Ａを更に設けている点、およびログ圧縮部２３２Ａが、ログ圧縮部２３４Ａとなり、ログ圧縮部の処理内容が一部変更となっている点で異なる。
【００７６】
タイマー処理部２５０は、各デバイスドライバ用のタイマー処理部で構成される。図には、Ｄｒｉｖｅｒ−Ａ用タイマー処理部２５１Ａ、Ｄｒｉｖｅｒ−Ｂ用タイマー処理部２５１Ｂ及びＤｒｉｖｅｒ−ｎ用タイマー処理部２５１ｎを図示する。
【００７７】
Ｄｒｉｖｅｒ−Ａ用タイマー処理部２５１Ａは、ログファイル４０２に出力されず、情報保存部２３３Ａに保存されている情報、および繰り返し回数情報４０６Ａを、ログファイル４０２へ出力させるための、特別なログを、繰り返し判定時間４０３の間隔で、情報受信キュー２１０に登録する。
【００７８】
ログ圧縮部２３４Ａから呼び出す形で追加したタイマー情報出力判断部２３５Ａが、Ｄｒｉｖｅｒ−Ａ用タイマー処理部２５１Ａによって出力された特別なログを検知することで、情報保存部２３３Ａに保存されている情報、および繰り返し回数情報４０６Ａを、ログファイル４０２へと出力させる。なお、Ｄｒｉｖｅｒ−Ｂ用タイマー処理部２５１ＢやＤｒｉｖｅｒ−ｎ用タイマー処理部２５１ｎ等の他のタイマー処理部もＤｒｉｖｅｒ−Ａ用タイマー処理部２５１Ａと同様の動作をする。
【００７９】
図５に情報圧縮部２３４Ａの処理の流れを示す。
【００８０】
情報圧縮部２３２Ａの処理と比較し、情報キュー２３１Ａから取得したログが、Ｄｒｉｖｅｒ−Ａ用タイマー処理部２５１Ａからのログかどうかを確認するために、タイマー情報出力判断部２３５Ａの呼び出し処理および結果の判断処理を追加している（ステップＳ６１７、ステップＳ６１８）。具体的には、ステップＳ６１７においてタイマー情報出力判断部２３５Ａを呼び出す。そして、ステップＳ６１７の戻り値をチェックすることによりＤｒｉｖｅｒ−Ａ用タイマー処理部２５１Ａからのログかどうかを判断する。なお、図５ではこの追加部分を破線で囲んで表記する。
【００８１】
タイマー情報出力判断部２３５Ａで、Ｄｒｉｖｅｒ−Ａ用タイマー処理部２５１Ａからのログと判断した場合、タイマー情報出力判断部２３５Ａの呼び出し以降は不要となり、次のログ待ちの処理に移る（ステップＳ６１８）。通常のＤｒｉｖｅｒ−Ａからのログと判断した場合は、図１の情報圧縮部２３２Ａと同じステップＳ６０４移行の処理を実行することで、ログの圧縮のための処理を行う。
【００８２】
タイマー情報出力判断部２３５Ａの処理について、図６を参照し説明する。
【００８３】
タイマー情報出力判断部２３５Ａは呼び出されると、情報圧縮部２３４Ａが取得したログを確認する（ステップＳ７０１）。そして、Ｄｒｉｖｅｒ−Ａ用タイマー処理部２５１Ａからのログかどうかを判断する（ステップＳ７０２）。
【００８４】
ここで、Ｄｒｉｖｅｒ−Ａ用タイマー処理部２５１Ａからのログであった場合（ステップＳ７０２においてＹｅｓ）、図３−２の繰り返し情報出力処理を呼び出し、繰り返し回数情報４０６Ａに応じた情報保存部２３３Ａの情報のログファイル４０２への出力を行う（ステップＳ７０３）。また、呼び出し元にＤｒｉｖｅｒ−Ａ用タイマー処理部２５１Ａからのログ情報であったことを知らせるための戻り値（今回は戻り値の例として「ＴＲＵＥ」を用いる。）を設定し、戻る（ステップＳ７０４）。
Ｄｒｉｖｅｒ−Ａ用タイマー処理部２５１Ａからのログでは無い場合（＝Ｄｒｉｖｅｒ−Ａからのログの場合）（ステップＳ７０２においてＮｏ）、Ｄｒｉｖｅｒ−Ａ用タイマー処理部２５１Ａからのログではないことを知らせるための戻り値（今回は戻り値の例として「ＦＡＬＳＥ」を用いる。）を設定するのみで、戻る（ステップＳ７０５）。
Ｄｒｉｖｅｒ−Ａ用タイマー処理部２５１Ａは、繰り返し判定時間情報４０５Ａで指定された時間間隔で、ログを出力する。処理の流れについて、図７を参照し説明する。
【００８５】
１．繰り返し判定時間４０３を用いてタイマーのカウント上限値を初期化する（ステップＳ８０１）。
２．タイマーのカウントを開始する（ステップＳ８０２）。開始後は、終了要求があるまでは、タイマーのカウントアップを行う（ステップＳ８０３、ステップＳ８０４、ステップＳ８０５及びステップＳ８０７）。
３．タイマーが上限に達すると（ステップＳ８０５においてＹｅｓ）、情報保存部２３３Ａの情報を出力させるために、ログを情報受信キュー２１０に登録する（ステップＳ８０６）。登録するログは、Ｄｒｉｖｅｒ−Ａ用として識別させるためにＤｒｉｖｅｒ−Ａ用の識別キー、およびＤｒｉｖｅｒ−Ａ用タイマー処理部２５１Ａの出力したログであることを示すためのキーワードを含んだ内容で作成する。
【００８６】
４．ログの情報受信キュー２１０への登録後、タイマーのカウントを０に初期化後（ステップＳ８０７）、再びカウントアップを開始する（ステップＳ８０３）。
【００８７】
以上の構成、処理により、図１の構成例と同様の効果が得られるが、Ｄｒｉｖｅｒ−Ａ３００Ａから繰り返し同一の情報が出力された後（繰り返し回数情報４０６Ａの値が２以上の状態）、情報の出力が停止、新たなログが出力されることなく繰り返し判定時間を超過した場合、情報保存部２３３Ａおよび繰り返し回数情報４０６Ａのログファイル４０２への出力タイミングについて、以下の差異がある。
【００８８】
図１の構成：繰り返し判定時間を超過後、Ｄｒｉｖｅｒ−Ａからログ（内容は関係なし）を取得したタイミングで出力する。
【００８９】
図４の構成：図１の構成での出力タイミング、または、Ｄｒｉｖｅｒ−Ａのログの出力状況に関係なく、Ｄｒｉｖｅｒ−Ａタイマー処理部のタイマーが上限に達したタイミングのいずれか早い方で、ログファイル４０２へ出力される。
【００９０】
なお、本発明の実施形態である情報圧縮装置は、ハードウェアにより実現することもできるが、コンピュータをその情報圧縮装置として機能させるためのプログラムをコンピュータがコンピュータ読み取り可能な記録媒体から読み込んで実行することによっても実現することができる。
【００９１】
また、本発明の実施形態による情報圧縮方法は、ハードウェアにより実現することもできるが、コンピュータにその方法を実行させるためのプログラムをコンピュータがコンピュータ読み取り可能な記録媒体から読み込んで実行することによっても実現することができる。
【００９２】
また、上述した実施形態は、本発明の好適な実施形態ではあるが、上記実施形態のみに本発明の範囲を限定するものではなく、本発明の要旨を逸脱しない範囲において種々の変更を施した形態での実施が可能である。
【産業上の利用可能性】
【００９３】
本発明は、Ｌｉｎｕｘ ＯＳを利用するシステム全般に適用できる。
【００９４】
また、Ｌｉｎｕｘ ＯＳを利用した組み込み製品で、ログを記録するための領域が限定される分野にも利用可能であり、適用効果が高いと考える。
【符号の説明】
【００９５】
１００  ＬｉｎｕｘＯＳ
２００  ログ圧縮層
２１０  情報受信キュー
２２０  制御部
２３０Ａ  Ｄｒｉｖｅｒ−Ａ用構成要素
２３０Ｂ  Ｄｒｉｖｅｒ−Ｂ用構成要素
２３０ｎ  Ｄｒｉｖｅｒ−ｎ用構成要素
２３１Ａ、２３１Ｂ、２３１ｎ  情報キュー
２３２Ａ、２３４Ａ、２３２Ｂ、２３２ｎ  ログ圧縮部
２３３Ａ、２３３Ｂ、２３３ｎ  情報保存部
２３５Ａ  タイマー情報出力判断部
２５０  タイマー処理部
２５１Ａ  Ｄｒｉｖｅｒ−Ａ用タイマー処理部
２５１Ｂ  Ｄｒｉｖｅｒ−Ｂ用タイマー処理部
２５１ｎ  Ｄｒｉｖｅｒ−ｎ用タイマー処理部
２５２  タイマー処理部群
３００Ａ  Ｄｒｉｖｅｒ−Ａ
３００Ｂ  Ｄｒｉｖｅｒ−Ｂ
３００ｎ  Ｄｒｉｖｅｒ−ｎ
３１０  Ｄｒｉｖｅｒ群
４０１  情報ｉ−１
４０２  ログファイル
４０３  繰り返し判定時間
４０４  識別キー
４０５Ａ、４０５Ｂ、４０５ｎ  繰り返し判定時間情報
４０６Ａ、４０６Ｂ、４０６ｎ  繰り返し回数情報
４０７Ａ、４０７Ｂ、４０７ｎ  出力時刻情報リスト
４０８Ａ、４０８Ｂ、４０８ｎ  出力情報
【図１】
2010277310.tif 000003
【図２】
2010277310.tif 000004
【図３−１】
2010277310.tif 000005
【図３−２】
2010277310.tif 000006
【図３−３】
2010277310.tif 000007
【図４】
2010277310.tif 000008
【図５】
2010277310.tif 000009
【図６】
2010277310.tif 000010
【図７】
2010277310.tif 000011
【図８】
2010277310.tif 000012
【図９】
2010277310.tif 000013