(57)【要約】【課題】異常の解析用のログの記録を適切に行うことができる機器、ログ記録制御方法、及びプログラムの提供を目的とする。【解決手段】当該機器において発生するイベントの履歴を履歴管理手段に記録するイベント記録手段と、前記イベントに応じた処理における異常の発生に応じ、前記異常発生までに前記履歴管理手段に記録された履歴と前記異常発生後に発生したイベントの履歴との比較を開始し、該比較に基づいてログ情報の記録の要否を判定する比較手段と、前記比較手段によってログ情報の記録が必要であると判定された後に、前記イベントに応じた処理に関するログ情報をログ情報管理手段に記録するログ記録手段とを有する。【選択図】図２
2010134705.tif 000002
【特許請求の範囲】
【請求項１】
当該機器において発生するイベントの履歴を履歴管理手段に記録するイベント記録手段と、
前記イベントに応じた処理における異常の発生に応じ、前記異常発生までに前記履歴管理手段に記録された履歴と前記異常発生後に発生したイベントの履歴との比較を開始し、該比較に基づいてログ情報の記録の要否を判定する比較手段と、
前記比較手段によってログ情報の記録が必要であると判定された後に、前記イベントに応じた処理に関するログ情報をログ情報管理手段に記録するログ記録手段とを有する機器。
【請求項２】
前記比較手段は、前記異常発生までに前記履歴管理手段に記録された履歴における連続した一部分と、前記異常発生後に発生したイベントの履歴の連続した一部分とが一致したときに前記ログ情報の記録が必要であると判定する請求項１記載の機器。
【請求項３】
前記イベントに応じた処理における異常の発生に応じ、前記異常発生までに前記履歴管理手段に記録された履歴を示す比較用データを生成する比較用データ生成手段を有し、
前記比較手段は、前記比較用データが示す履歴と前記異常発生後に発生したイベントの履歴との比較に基づいてログ情報の記録の要否を判定する請求項１又は２記載の機器。
【請求項４】
前記イベント記録手段は、最新の所定数のイベントの履歴を前記履歴管理手段に記録する請求項１乃至３いずれか一項記載の機器。
【請求項５】
機器が実行するログ記録制御方法であって、
当該機器において発生するイベントの履歴を履歴管理手段に記録するイベント記録手順と、
前記イベントに応じた処理における異常の発生に応じ、前記異常発生までに前記履歴管理手段に記録された履歴と前記異常発生後に発生したイベントの履歴との比較を開始し、該比較に基づいてログ情報の記録の要否を判定する比較手順と、
前記比較手順によってログ情報の記録が必要であると判定された後に、前記イベントに応じた処理に関するログ情報をログ情報管理手段に記録するログ記録手順とを有するログ記録制御方法。
【請求項６】
前記比較手順は、前記異常発生までに前記履歴管理手段に記録された履歴における連続した一部分と、前記異常発生後に発生したイベントの履歴の連続した一部分とが一致したときに前記ログ情報の記録が必要であると判定する請求項５記載のログ記録制御方法。
【請求項７】
前記イベントに応じた処理における異常の発生に応じ、前記異常発生までに前記履歴管理手段に記録された履歴を示す比較用データを生成する比較用データ生成手順を有し、
前記比較手順は、前記比較用データが示す履歴と前記異常発生後に発生したイベントの履歴との比較に基づいてログ情報の記録の要否を判定する請求項５又は６記載のログ記録制御方法。
【請求項８】
前記イベント記録手順は、最新の所定数のイベントの履歴を前記履歴管理手段に記録する請求項５乃至７いずれか一項記載のログ記録制御方法。
【請求項９】
機器に、
当該機器において発生するイベントの履歴を履歴管理手段に記録するイベント記録手順と、
前記イベントに応じた処理における異常の発生に応じ、前記異常発生までに前記履歴管理手段に記録された履歴と前記異常発生後に発生したイベントの履歴との比較を開始し、該比較に基づいてログ情報の記録の要否を判定する比較手順と、
前記比較手順によってログ情報の記録が必要であると判定された後に、前記イベントに応じた処理に関するログ情報をログ情報管理手段に記録するログ記録手順とを実行させるためのプログラム。
【請求項１０】
前記比較手順は、前記異常発生までに前記履歴管理手段に記録された履歴における連続した一部分と、前記異常発生後に発生したイベントの履歴の連続した一部分とが一致したときに前記ログ情報の記録が必要であると判定する請求項９記載のプログラム。
【請求項１１】
前記イベントに応じた処理における異常の発生に応じ、前記異常発生までに前記履歴管理手段に記録された履歴を示す比較用データを生成する比較用データ生成手順を有し、
前記比較手順は、前記比較用データが示す履歴と前記異常発生後に発生したイベントの履歴との比較に基づいてログ情報の記録の要否を判定する請求項９又は１０記載のプログラム。
【請求項１２】
前記イベント記録手順は、最新の所定数のイベントの履歴を前記履歴管理手段に記録する請求項９乃至１１いずれか一項記載のプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、機器、ログ記録制御方法、及びプログラムに関し、特に異常の解析にログ情報が利用される機器、ログ記録制御方法、及びプログラムに関する。
【背景技術】
【０００２】
プログラムによって制御される機器において発生した障害の原因を解析するには、一般的に障害発生時におけるプログラムの処理シーケンスやプログラムによって利用されるデータの値等を知る必要がある。プログラムの開発時に発生した障害であれば、斯かる情報（処理シーケンスやデータの値等）は、市販されている各種のツール（デバッガツール等の不具合解析ツール）を利用することにより、比較的容易に知ることができる。
【０００３】
しかし、客先において発生した障害（市場障害）の場合、ユーザによる通常の使用が行われている状況において不具合解析ツールの利用は困難である。また、セキュリティの観点よりネットワークを介した解析を行えない場合も多い。更に、画像形成装置のような組み込み系機器の場合、不具合解析ツールが整備されていない場合が多い。
【０００４】
そこで、組み込み系機器では、デバッグ用に出力されるログによって障害の解析が行われている。
【特許文献１】特開２００２−２０７３９９号公報
【発明の開示】
【発明が解決しようとする課題】
【０００５】
しかしながら、従来、障害の発生のタイミングは予期することが困難であるため、デバッグ用のログの記録は常時行わなければならなかった。その結果、ＣＰＵの性能や記憶容量等のハードウェアリソースに乏しい組み込み系機器の場合、ログの記録のために当該ハードウェアリソースが消費されてしまい、通常の使用に関する処理性能を劣化させてしまう可能性があった。
【０００６】
本発明は、上記の点に鑑みてなされたものであって、異常の解析用のログの記録を適切に行うことができる機器、ログ記録制御方法、及びプログラムの提供を目的とする。
【課題を解決するための手段】
【０００７】
そこで上記課題を解決するため、本発明は、当該機器において発生するイベントの履歴を履歴管理手段に記録するイベント記録手段と、前記イベントに応じた処理における異常の発生に応じ、前記異常発生までに前記履歴管理手段に記録された履歴と前記異常発生後に発生したイベントの履歴との比較を開始し、該比較に基づいてログ情報の記録の要否を判定する比較手段と、前記比較手段によってログ情報の記録が必要であると判定された後に、前記イベントに応じた処理に関するログ情報をログ情報管理手段に記録するログ記録手段とを有する。
【０００８】
このような機器では、異常の解析用のログの記録を適切に行うことができる。
【発明の効果】
【０００９】
本発明によれば、異常の解析用のログの記録を適切に行うことができる。
【発明を実施するための最良の形態】
【００１０】
以下、図面に基づいて本発明の実施の形態を説明する。本実施の形態では、機器の一例として複合機を用いて説明する。図１は、本発明の実施の形態における複合機のハードウェア構成例を示す図である。図１において複合機１０は、コントローラ２０１、オペレーションパネル２０２、ファクシミリコントロールユニット（ＦＣＵ）２０３、撮像部２０４、及び印刷部２０５等を備える。
【００１１】
コントローラ２０１は、ＣＰＵ２１１、ＡＳＩＣ２１２、ＮＢ２２１、ＳＢ２２２、ＭＥＭ−Ｐ２３１、ＭＥＭ−Ｃ２３２、ＨＤＤ（ハードディスクドライブ）２３３、メモリカードスロット２３４、ＮＩＣ（ネットワークインタフェースコントローラ）２４１、ＵＳＢデバイス２４２、ＩＥＥＥ１３９４デバイス２４３、セントロニクスデバイス２４４により構成される。
【００１２】
ＣＰＵ２１１は、種々の情報処理用のＩＣである。ＡＳＩＣ２１２は、種々の画像処理用のＩＣである。ＮＢ２２１は、コントローラ２０１のノースブリッジである。ＳＢ２２２は、コントローラ２０１のサウスブリッジである。ＭＥＭ−Ｐ２３１は、複合機１０のシステムメモリである。ＭＥＭ−Ｃ２３２は、複合機１０のローカルメモリである。ＨＤＤ２３３は、複合機１０のストレージである。メモリカードスロット２３４は、メモリカード２３５をセットするためのスロットである。ＮＩＣ２４１は、ＭＡＣアドレスによるネットワーク通信用のコントローラである。ＵＳＢデバイス２４２は、ＵＳＢ規格の接続端子を提供するためのデバイスである。ＩＥＥＥ１３９４デバイス２４３は、ＩＥＥＥ１３９４規格の接続端子を提供するためのデバイスである。セントロニクスデバイス２４４は、セントロニクス仕様の接続端子を提供するためのデバイスである。
【００１３】
オペレーションパネル２０２は、オペレータが複合機１０に入力を行うためのハードウェア（操作部）であると共に、オペレータが複合機１０から出力を得るためのハードウェア（表示部）である。
【００１４】
図２は、本発明の実施の形態における複合機のソフトウェア構成例を示す図である。図２において、複合機１０のソウトウェアは、ＪＳＤＫアプリ２０、ＪＳＤＫプラットフォーム３０、ＪＮＩ４０、ネイティブサービスレイヤ５０、及びログ記録制御部６０等を含む。これらの各ソフトウェアは、それぞれに実装された処理手順をＣＰＵ２１１に実行させることによりその機能を実現する。
【００１５】
ネイティブサービスレイヤ５０は、ネイティブコードによるプログラムによって構成される。ネイティブサービスレイヤ５０は、複合機１０のハードウェアやソフトウェアに基づく機能を利用させるためのインタフェースを上位モジュールに対して提供し、当該インタフェースの呼び出し（機能の利用要求）に応じて、当該機能を実現するための制御を行う。例えば、ネイティブサービスレイヤ５０には、ネットワーク通信の制御に関するインタフェースを提供するモジュール、ファクシミリの制御に関するインタフェースを提供するモジュール、蓄積文書（ＨＤＤ２３３に保存されている文書（画像）データ）の配信処理の制御に関するインタフェースを提供するモジュール、撮像部２０４や印刷部２０５の制御に関するインタフェースを提供するモジュール、メモリやＨＤＤ２３３等の制御に関するインタフェースを提供するモジュール、オペレーションパネル２０２の制御に関するインタフェースを提供するモジュール、認証処理や課金処理の制御に関するインタフェースを提供するモジュール、ユーザ情報の管理に関するインタフェースを提供するモジュール等が含まれる。
【００１６】
ＪＮＩ４０は、Ｊａｖａ（登録商標）によって記述されたプログラムから、ネイティブサービスレイヤ５０が提供する機能の利用を可能とするＡＰＩ（Application Program Interface）を備える、いわゆるＪＮＩ（Java（登録商標） Native Interface）である。
【００１７】
ＪＳＤＫプラットフォーム３０は、ＪＳＤＫアプリ２０の実行環境を提供するソフトウェアプラットフォームである。ＪＳＤＫプラットフォーム３０は、Ｊａｖａ（登録商標）の標準のクラスや、複合機１０用に拡張されたクラスに関するクラスライブラリ、及びＪａｖａ（登録商標）仮想マシン等を含む。
【００１８】
ＪＳＤＫアプリ２０は、ＪＳＤＫプラットフォーム３０において公開されている専用のＳＤＫ（ソフトウェア開発キット）を使用して作成されたアプリケーション（以下「ＳＤＫアプリ」という。）である。ＳＤＫアプリのうち、特にＪａｖａ（登録商標）言語を使用して開発されたアプリケーションをＪＳＤＫアプリという。図中では、ＪＳＤＫアプリ２０として、アプリＡ、アプリＢ、及びアプリＣ等が例示されている。
【００１９】
ログ記録制御部６０は、複合機１０の動作に関するログ情報（特に、デバッグ用のログ情報）の記録を適切なタイミングで実行する。ログ記録制御部６０は、イベント取得部６１、エラー検知部６２、イベント比較部６３、ログ出力部６４、発生イベント格納部６５、比較用イベント格納部６６、及びログ格納部６７等を含む。
【００２０】
イベント取得部６１は、機器１０において発生するイベントを示すデータ（以下、「イベントデータ」をＪＮＩ４０より受信し、当該イベントデータを発生イベント格納部６５に蓄積する。発生イベント格納部６５は、イベントデータの履歴を蓄積（管理）するための記憶領域（例えば、ファイル）であり、例えば、ＨＤＤ２３３に形成される。本実施の形態において、発生イベント格納部６５は、リングバッファの構造によって履歴を蓄積する。したがって、発生イベント格納部６５には最近（最新）のイベントから所定数分遡ったイベントまでのイベントデータが蓄積される。なお、イベントとは、オペレーションパネル２０２を介して行われる入力や、複合機１０のハードウェア又はソフトウェアの動作に応じて発生する各種の事象又は事象の通知をいう。
【００２１】
エラー検知部６２は、イベントに応じてＪＳＤＫプラットフォーム３０によって実行される処理において障害又は不具合等に基づいて発生したエラー（異常）を検知する。エラー検知部６２は、エラーの検知に応じ、発生イベント格納部６５に蓄積されているイベントデータの履歴を比較用イベント格納部６６に転記（コピー）する。比較用イベント格納部６６は、エラー発生時の発生イベント格納部６５の内容（すなわち、エラー発生時における過去のイベントの履歴）を保持しておくための記録領域（例えば、ファイル）であり、例えば、ＨＤＤ２３３に形成される。比較用イベント格納部６６に転記されたイベントデータを、以下「比較用イベントデータ」という。
【００２２】
イベント比較部６３は、比較用イベント格納部６６に格納されている比較用イベントデータの履歴と、エラー発生後に発生したイベントのイベントデータの履歴とを比較する。イベント比較部６３は、当該比較に基づいてログ情報の記録の要否を判定する。より詳しくは、比較用イベントデータの履歴における連続した一部分と、エラー発生後に発生したイベントのイベントデータの履歴における連続した一部分とが一致した場合、ログ情報の記録が必要であると判定する。
【００２３】
ログ出力部３４は、ＪＳＤＫアプリ２０又はＪＳＤＫプラットフォーム３０による処理のログ情報をログ格納部６７に出力（記録）する。ログ格納部６７は、ログ情報を格納するための記録領域（例えば、ファイル）であり、例えば、ＨＤＤ２３３に形成される。但し、ログ情報は、ネットワークを介して接続されるコンピュータ（記憶装置）に記録されてもよい。なお、本実施の形態において、ＪＳＤＫアプリ２０及びＪＳＤＫプラットフォーム３０によるログ情報は、通常は記録されない。イベント比較部６３によってログ情報の記録が必要であると判定された後にログ情報の記録は開始される。
【００２４】
以下、複合機１０の処理手順について説明する。図３は、複合機によるログ記録処理の処理手順を説明するためのフローチャートである。同図では、一つのイベントの発生に応じて実行される処理手順を示す。したがって、イベントが発生するたびに同図の処理手順が繰り返し実行される。
【００２５】
ユーザによるオペレーションパネル２０２に対する入力等、何らかのイベントの発生が検知されると、複合機１０は、イベントに応じた処理（例えば、画面の遷移、ジョブの実行等）を実行する（Ｓ１０１）。続いて、複合機１０は、発生したイベントのイベントデータに基づいて、当該イベントがフィルタ情報に指定されたイベントであるか否かを判定する（Ｓ１０２）。
【００２６】
図４は、イベントデータの構成例を示す図である。同図において、イベントデータは、イベントコード及び種別等の項目（又は属性）を有する。イベントコードは、イベントの内容を識別するための識別情報（番号又は記号等）である。例えば、オペレーションパネル６０２に対する同一のキー入力に対応するイベントデータは、同一のイベントコードを有する。種別は、発生要因又は発生箇所等に応じてイベントを分類した場合に、イベントがいずれの分類に属するかを示す情報である。例えば、イベントは、オペレーションパネル６０２の入力に応じたイベント、スキャン機能に関するイベント、印刷機能に関するイベント、電源関連のイベント等の種別に分類される。なお、イベントコードにイベントの種別を示す記号が含まれてもよい。
【００２７】
また、フィルタ情報とは、いずれの種別に属するイベントを監視対象とするかを示す情報（監視対象とするイベントをフィルタリングするための情報）である。フィルタ情報は、予め管理者等によって設定され、ＨＤＤ２３３等に記録されている。したがって、ステップＳ１０２では、発生したイベントの種別と、フィルタ情報として設定されているイベントの種別とが比較される。複数の種別がフィルタ情報に設定されてもよい。なお、ファイル等、記録媒体又はネットワークを介して流通可能な形式によってフィルタ情報を管理するとよい。そうすることにより、客先にフィルタ情報を容易に適用することができる。
【００２８】
発生したイベントの種別が、フィルタ情報に設定されている種別に含まれる場合（Ｓ１０２でＹｅｓ）、複合機１０は、発生イベント格納部６５にイベントデータを記録する（Ｓ１０３）。
【００２９】
図５は、発生イベント格納部の構成例を示す図である。同図において、発生イベント格納部６５は、イベントデータを発生順に蓄積可能な（すなわち、イベントデータの履歴を記録可能な）構成を有している。本実施の形態において、発生イベント格納部６５は、リングバッファとして利用される。すなわち、最終エントリ（最終行）にイベントデータが記録された次は、先頭のエントリにイベントデータが記録される。したがって、現時点から所定数分過去に遡ってイベントデータが蓄積される。発生イベント格納部６５をリングバッファとするのは、複合機１０の記憶領域の消費量の増加を抑止するためである。但し、必ずしもリングバッファでなくてもよい。例えば、リスト構造によって発生イベント格納部６５を構成してもよい。
【００３０】
続いて、複合機１０は、比較用イベント格納部６６に比較用イベントデータが登録されているか否かを判定する（Ｓ１０４）。比較用イベント格納部６６に比較用イベントデータが登録されていない場合（Ｓ１０４でＮｏ）、複合機１０は、今回のイベントに応じた処理においてエラー（例外も含む。）が発生したか否かを判定する（Ｓ１０５）。エラーが発生した場合（Ｓ１０５でＹｅｓ）は、発生イベント格納部６５に記録されているイベントデータを、その発生順に比較用イベント格納部６６にコピーし、比較用イベント格納部６６のポインタ（以下、「比較ポインタ」という。）を先頭にセットする（Ｓ１０６）。また、複合機１０は、イベント比較部６３による比較回数を０に初期化する。なお、エラーが発生していない場合（Ｓ１０５でＮｏ）、コピーは行われない。
【００３１】
一方、比較用イベント格納部６６にイベントデータが登録されている場合（すなわち、少なくとも一度エラーが発生した場合）（Ｓ１０４でＹｅｓ）、複合機１０は、比較ポインタが、比較用イベント格納部６６の末尾（最終エントリの後）を指しているか否かを判定する（Ｓ１１１）。比較ポインタが末尾でない場合（Ｓ１１１でＮｏ）、複合機１０は、今回のイベントのイベントコードと比較用イベント格納部６６において比較ポインタが指している比較用イベントデータのイベントコードとを比較する（Ｓ１１２）。両者が一致する場合（Ｓ１１３でＹｅｓ）、複合機１０は、比較ポインタと比較回数とをインクリメントする（Ｓ１１４）。続いて、複合機１０は、比較回数が予め設定された閾値以上であるか否か（すなわち、閾値以上の一致が発生したか否か）を判定する（Ｓ１１５）。すなわち、過去にエラーが発生したイベントのシーケンスの先頭部分と同一シーケンスが再現されているか否かが判定される。
【００３２】
例えば、連続した比較用イベントデータのイベントコードが、それぞれａ、ｂ、ｃ、ａ、ｄ、ｅである場合（ここでは、便宜上、アルファベット一文字によってイベントコードを表現している。）であって、閾値が「３」である場合、既に、先頭のａ、ｂの一致が確認された後、今回のイベントのイベントコードが「ｃ」であれば、閾値以上の一致が発生したと判定される。
【００３３】
比較回数が閾値以上の場合（Ｓ１１５でＹｅｓ）、複合機１０は、ＪＳＤＫアプリ２０及びＪＳＤＫプラットフォーム３０によるログ情報の出力を有効化する（Ｓ１１６）。ログ情報の出力が有効化されることにより、ＪＳＤＫアプリ２０及びＪＳＤＫプラットフォーム３０のソースコードに埋め込まれたログ出力命令が有効化される。その結果、次回以降に発生するイベントに応じてステップＳ１０１において実行される処理に関するログ情報がログ格納部６７に記録される。
【００３４】
すなわち、ステップＳ１１６が実行される前は、ＪＳＤＫアプリ２０及びＪＳＤＫプラットフォーム３０によるログ情報の出力は無効化されている。したがって、当該ログ情報の出力は行われない。ログ情報の出力の有効化及び無効化の切り替えは、フラグ変数等を用いて行えばよい。
【００３５】
なお、比較回数が閾値未満の場合（Ｓ１１５でＮｏ）、複合機１０は、ログ情報の出力の有効化は行わない。
【００３６】
一方、ステップＳ１１１において、比較ポインタが比較用イベント格納部６６の末尾（最終エントリの後）を指している場合（Ｓ１１１でＹｅｓ）、複合機１０は、今回のイベントに応じた処理においてエラーが発生したか否かを判定する（Ｓ１２１）。エラーが発生した場合（Ｓ１２１でＹｅｓ）、ログ格納部６７に記録されているログ情報を削除せずに保存しておく（Ｓ１２２）。エラーが発生していない場合（Ｓ１２１でＮｏ）、複合機１０は、ログ格納部６７に記録されているログ情報を削除する（Ｓ１２３）。
【００３７】
ステップＳ１２２、Ｓ１２３、又はステップＳ１１３でＮｏの場合（今回のイベントのイベントコードと比較用イベント格納部６６において比較ポインタが指している比較用イベントデータのイベントコードとが一致しない場合）に続いて、複合機１０は、比較ポインタ及び比較回数を初期化する（すなわち、ポインタ先を比較用イベント格納部６６の先頭位置に設定し、比較回数を０とする。）（Ｓ１２４）。続いて、複合機１０は、ＪＳＤＫアプリ２０及びＪＳＤＫプラットフォーム３０によるログ情報の出力を無効化する（Ｓ１２５）。
【００３８】
続いて、図２に示される構成要素がどのように連携することで図３の処理手順が実現されるかについて説明する。図６は、ログ記録処理における構成要素間の連携を説明するための図である。
【００３９】
複合機１０において発生したイベントは、比図示のＯＳ（Operating System）からＪＮＩ４０に通知される（Ｓ２０１）。ＪＮＩ４０は、通知されたイベントのイベントデータをＪＳＤＫプラットフォーム３０に送信する（Ｓ２０２）。イベントデータを受信したＪＳＤＫプラットフォーム３０は、イベントに応じた処理を実行する。また、ＪＳＤＫプラットフォーム３０は、必要に応じて、イベントデータを操作対象とされているＪＳＤＫアプリ２０に通知する（Ｓ２０３）。イベントデータを通知されたＪＳＤＫアプリ２０は、イベントに応じた処理を実行する。
【００４０】
ＪＮＩ４０は、また、イベントデータをイベント取得部６１及びイベント比較部６３に送信する（Ｓ２０４、Ｓ２０５）。イベント取得部６１は、受信されたイベントデータを発生イベント格納部６５に記録する（Ｓ２０６）。イベント比較部６３は、受信されたイベントデータを無視する。
【００４１】
正常動作時は、以上の処理が繰り返される。その結果、発生イベント格納部６５には、最近の所定数のイベントデータが蓄積される。
【００４２】
イベントに応じて実行されるＪＳＤＫアプリ２０又はＪＳＤＫプラットフォーム３０の処理において、プログラムのバグ又は複合機１０の故障等による不具合（ネイティブサービスレイヤ５０からのエラーの通知、又はＪＳＤＫアプリ２０若しくはＪＳＤＫプラットフォーム３０における例外の発生）が検知されると、ＪＳＤＫプラットフォーム３０は、エラー検知部６２に対しエラーの発生を通知する（Ｓ２１１）。エラー検知部６２は、エラーの発生通知に応じ、発生イベント格納部６５に蓄積されているイベントデータ群を比較用イベント格納部６６にコピーする（Ｓ２１２）。更に、エラー検知部６２は、比較用イベントデータが比較用イベント格納部６６に登録されたことをイベント比較部６３に通知する（Ｓ２１３）。
【００４３】
エラー検知部６２からの通知に応じ、イベント比較部６３は、ステップＳ２０５のタイミングで繰り返し受信されるイベントデータと比較用イベント格納部６６との比較を開始する（Ｓ２１４）比較用イベント格納部６６において比較対象とされる比較用イベントデータは、比較ポインタによって識別される。比較ポインタは、エラー検知部６２からの通知に応じ、イベント比較部６３によって比較用イベント格納部６６の最初のエントリにセットされる。その後、比較が終了するたびにインクリメントされる。イベント比較部６３は、比較対象の一致が連続した場合は、比較回数をインクリメントする。比較回数が閾値以上となった場合（すなわち、連続して閾値回数以上比較対象が一致した場合）、イベント比較部６３は、ＪＳＤＫプラットフォーム３０に対して、ログ情報の出力開始要求を行う（Ｓ２２１）。
【００４４】
例えば、閾値が３であり、連続した比較用イベントデータのイベントコードが、それぞれａ、ｂ、ｃ、ａ、ｄ、ｅである場合、イベント比較部６３は、受信されるイベント（Ｓ２０５）が、ａ、ｂ、ｃと連続したことが確認されたときにログ情報の出力開始要求を行う。ログ情報の出力開始要求は、ＪＳＤＫプラットフォーム３０によってＪＳＤＫアプリ２０にも通知される（Ｓ２２２）。
【００４５】
ログ情報の出力開始要求に応じ、ＪＳＤＫプラットフォーム３０及びＪＳＤＫアプリ２０は、ログ情報の出力（ログの出力命令）を有効化する。したがって、その後に通知されるイベント（Ｓ２０２、Ｓ２０３）に応じて実行される処理に関しては、ＪＳＤＫプラットフォーム３０又はＪＳＤＫアプリ２０は、ログの出力命令に基づいてログ情報をログ出力部６４に通知する（Ｓ２３１、Ｓ２３２）。ログ出力部６４は、通知されたログ情報を所定の形式に基づいてログ格納部６７に記録する。
【００４６】
その結果、イベントの発生に応じて処理が実行されるたびにＪＳＤＫアプリ２０又はＪＳＤＫプラットフォーム３０によるログ情報がログ格納部６７に蓄積される。また、イベント比較部６３によるイベントデータの比較も継続される。
【００４７】
その後、比較用イベント格納部６６の最終エントリ（最後の比較用イベントデータ）が比較対象となり、最後の比較用イベントデータによる比較が行われると、イベント比較部６３は、ログ情報の出力停止要求をＪＳＤＫプラットフォーム３０に通知する（Ｓ２４１）。ＪＳＤＫプラットフォーム３０は、ログ情報の出力停止要求をＪＳＤＫアプリ２０に通知する（Ｓ２４２）。
【００４８】
ログ情報の出力停止要求に応じ、ＪＳＤＫプラットフォーム３０及びＪＳＤＫアプリ２０は、ログ情報の出力を無効化する。したがって、その後に通知されるイベント（Ｓ２０２、Ｓ２０３）に応じて実行される処理に関しては、ログ情報の出力は行われない。
【００４９】
続いて、ＪＳＤＫプラットフォーム３０は、ログ出力部６４に対し、ログ情報の出力停止を通知する（Ｓ２４３）。ログ出力部６４は、最後のログ情報がエラーを示すものである場合、ログ格納部６７に記録されているログ情報を所定の記憶領域に保存（退避）しておく。
【００５０】
その後は退避されたログ情報に基づいて不具合（障害）の原因の解析が行われる。
【００５１】
上述したように、本実施の形態における複合機１０は、過去に障害が発生した際のイベントの履歴（イベントシーケンス）の連続した一部分と一致するイベントシーケンスの発生が検知された場合（すなわち、過去に障害が発生した際のイベントシーケンスが再現される可能性が高い場合）に、ログ情報の記録を開始する。
【００５２】
一般的に、複合機１０等の組み込み系機器では、イベントドリブン型の制御が行われる。イベントドリブン型の制御とは、機器から上がってくるイベントをトリガとして何らかの処理を行い、処理が終了したらイベント待機状態に戻るというものである。したがって、何らかの障害が発生した場合、それまでのイベントシーケンスと障害との間に関係がある可能性が高い。すなわち、キー操作により発生するイベントシーケンスは、一連のキー操作の手順を表すことになり、特定のキー操作で発生する不具合であれば、イベントシーケンスとの関連を持つといえる。
【００５３】
しがって、複合機１０によれば、障害が発生する前であって、かつ、障害が発生する可能性が相対的に高いと予測されるときにログ情報の記録を開始することができる。よって、常にログ情報を記録する場合に比べて、ログ情報を記録するための記憶容量を著しく低下することができると共に、障害の解析作業にとって有用なログ情報を記録することができる。
【００５４】
なお、比較用イベント格納部６６は、障害が発生するたびに生成されてもよい。この場合、同時期に複数の比較用イベント格納部６６が存在しうる。複数の比較用イベント格納部６６が存在する場合、イベント比較部６３は、イベントが発生するたびに複数の比較用イベント格納部６６との比較を行う。その結果、少なくとも一つの比較用イベント格納部６６におけるイベントシーケンスの一部（閾値分の一部）との一致が確認された場合、ログ情報の出力を開始させる。
【００５５】
また、フィルタ情報において複数の種別（イベントの種別）が設定されている場合（実質的に複数のフィルタが存在する場合）は、種別ごとに発生イベント格納部６５及び比較用イベント格納部６６を用意し、種別ごとに独立してイベントシーケンスの比較を行ってもよい。
【００５６】
また、ＪＳＤＫアプリ２０、ＪＳＤＫプラットフォーム３０、又はログ出力部６４は、ログ情報の出力を有効とする範囲、ログ情報の出力レベル等をフィルタ情報に基づいて動的に決定するようにしてもよい。例えば、スキャン機能に関するイベント及び印刷機能に関するイベントが監視対象とされ、それぞれの種別がフィルタ情報として設定されているとする。この状態でスキャン機能に関するイベントによって不具合が発生した場合、スキャン機能に関するログ情報の出力のみを有効化する。
【００５７】
同様に、不具合の内容（例えば、エラーの内容）に応じて、ログ情報を出力する範囲（例えば、クラス等）を動的に決定してもよい。
【００５８】
また、同一不具合（例えば、エラーコード又は例外コードが同一であるもの）が複数回発生した場合に、それぞれ独立した複数の比較用イベント格納部６６に比較用イベントデータを登録し、比較用イベント格納部６６間において重複している比較用イベントデータを抽出し、抽出された比較用イベントデータの種別に基づいてフィルタ情報を自動的に更新するようにしてもよい。
【００５９】
更に、本実施の形態では、比較ポインタは一つであり、その初期位置は比較用イベント格納部６６の最初のエントリ（比較用イベントデータ）である例を示したが、一つの比較用イベント格納部６６に対して複数の比較ポインタを設定するようにしてもよい。例えば、比較用イベントデータのイベントシーケンス（以下、「比較用イベントシーケンス」という。）が、ａ、ｂ、ｃ、ａ、ｄ、ｅ（アルファベット一文字は、イベントコードを示す。）であり、新たに発生したイベントのイベントコードが「ａ」である場合、比較用イベントシーケンスの最初の「ａ」と４番目の「ａ」とのそれぞれに対して比較ポインタをセットする。以降は、各比較ポインタを一つずつずらしつつ、それぞれの比較ポインタが指す比較用イベントデータのイベントコードと、新たに発生したイベントのイベントコードとを比較する。いずれかについて閾値以上の一致を検出したら、ログ情報の出力を開始する。
【００６０】
そうすることにより、例えば、上記比較用イベントシーケンスにおいて、ａ、ｄ、ｅが不具合の原因となるイベントシーケンスである場合において、ａ、ｄのイベントに対応する操作が行われた場合であっても（この場合の閾値は「２」とする。）、ログ情報の出力を開始することができる。
【００６１】
以上、本発明の実施例について詳述したが、本発明は斯かる特定の実施形態に限定されるものではなく、特許請求の範囲に記載された本発明の要旨の範囲内において、種々の変形・変更が可能である。
【図面の簡単な説明】
【００６２】
【図１】本発明の実施の形態における複合機のハードウェア構成例を示す図である。
【図２】本発明の実施の形態における複合機のソフトウェア構成例を示す図である。
【図３】複合機によるログ記録処理の処理手順を説明するためのフローチャートである。
【図４】イベントデータの構成例を示す図である。
【図５】発生イベント格納部の構成例を示す図である。
【図６】ログ記録処理における構成要素間の連携を説明するための図である。
【符号の説明】
【００６３】
１０          複合機
２０          ＪＳＤＫアプリ
３０          ＪＳＤＫプラットフォーム
４０          ＪＮＩ
５０          ネイティブサービスレイヤ
６０          ログ記録制御部
６１          イベント取得部
６２          エラー検知部
６３          イベント比較部
６４          ログ出力部
６５          発生イベント格納部
６６          比較用イベント格納部
６７          ログ格納部
２０１        コントローラ
２０２        オペレーションパネル
２０３        ファクシミリコントロールユニット
２０４        撮像部
２０５        印刷部
２１１        ＣＰＵ
２１２        ＡＳＩＣ
２２１        ＮＢ
２２２        ＳＢ
２３１        ＭＥＭ−Ｐ
２３２        ＭＥＭ−Ｃ
２３３        ＨＤＤ
２３４        メモリカードスロット
２３５        メモリカード
２４１        ＮＩＣ
２４２        ＵＳＢデバイス
２４３        ＩＥＥＥ１３９４デバイス
２４４        セントロニクスデバイス
【図１】
2010134705.tif 000003
【図２】
2010134705.tif 000004
【図３】
2010134705.tif 000005
【図４】
2010134705.tif 000006
【図５】
2010134705.tif 000007
【図６】
2010134705.tif 000008