(57)【要約】【課題】本発明は、ＭＦＰの性能にほとんど影響を及ぼすことなく、障害解析に最低限必要なログを確実に記録することができる画像形成装置、制御方法、およびプログラムを提供することを目的とする。【解決手段】ログをその重要度によって分類し、重要度が高いログはハードディスクに直接記録する一方、重要度が低いログについては、メモリ上に循環して記録させる２種類の記録方式を採用する。また、システム内で障害が発生した場合、障害に関連するプロセスに係るログのみをメモリから読み出し、これをハードディスクに書き出す。このような構成を採用することによって、平常時のログ記録は、処理速度の速いメモリ記録であるためＭＦＰの性能にほとんど影響を与えず、障害発生時には、障害解析に必要なデバッグレベルのログが確実に保存される。【選択図】図１
2010152838.tif 000002
【特許請求の範囲】
【請求項１】
装置のジョブ履歴をログデータとして保存するログ保存手段を備える画像形成装置であって、
前記ログ保存手段は、
装置内で実行される各プロセスから重要度の高低が予め定義されたログの記録要求を受信するログ受信部と、
高重要度が定義されたログについては記録先としてハードディスクを選択し、低重要度が定義されたログについては記録先としてメモリを選択するログ記録先振分部と、
前記ハードディスクが記録先として選択された前記ログをハードディスクに記録するハードディスク記録部と、
前記メモリが記録先として選択された前記ログをプロセス毎にメモリに記録するメモリ記録部と、
前記装置内で障害が発生したプロセスを特定して通知する障害発生プロセス通知部と、
前記通知に応答して、前記障害が発生したプロセスおよび該プロセスと依存関係にあるプロセスのログのみを前記メモリから読み出し、当該読み出されたログを前記ハードディスクに書き出すログ移管部と、
を含む、画像形成装置。
【請求項２】
前記ログ保存手段は、さらに、前記装置内で実行されるプロセス間通信を監視し、該プロセス間通信の呼び手と受け手とを対応付けて記憶するためのプロセス間通信管理部を含む、請求項１に記載の画像形成装置。
【請求項３】
前記ログ保存手段は、さらに、前記障害が発生したプロセスおよび該プロセスと依存関係にあるプロセスのリストを作成するプロセス間依存リスト作成部を含む、請求項１または２に記載の画像形成装置。
【請求項４】
前記メモリは、プロセス毎に割り当てられたログ記憶領域を備え、前記メモリ記録部は、前記ログ記憶領域をメモリ上に割り当てるためのメモリ管理テーブルを作成するメモリ管理部を含む、請求項１〜３のいずれか１項に記載の画像形成装置。
【請求項５】
前記メモリ管理テーブルは、前記ログ記憶領域のメモリサイズとプロセス名を対応付けて格納するテーブルである、請求項４に記載の画像形成装置。
【請求項６】
前記ログ移管部は、前記プロセス間依存リストと前記メモリ管理テーブルとを照合して、前記障害が発生したプロセスおよび該プロセスと依存関係にあるプロセスを特定し、特定したプロセスに係るログを前記メモリから読み出す、請求項４または５に記載の画像形成装置。
【請求項７】
画像形成装置に対して、装置のジョブ履歴をログデータとして保存する処理を実行させるためのコンピュータ実行可能な制御方法であって、該方法は、画像形成装置に対して、
装置内で実行される各プロセスから重要度の高低が予め定義されたログの記録要求を受信するステップと、
高重要度が定義されたログについては記録先としてハードディスクを選択し、低重要度が定義されたログについては記録先としてメモリを選択するステップと、
前記ハードディスクが記録先として選択された場合には、前記ログをハードディスクに記録し、前記メモリが記録先として選択された場合には、前記ログをプロセス毎にメモリに記録するステップとを実行させ、
前記装置内で障害が発生したプロセスを特定する通知を受領した場合には、障害が発生したプロセスおよび該プロセスと依存関係にあるプロセスのログを前記メモリから全て読み出し、当該読み出されたログを前記ハードディスクに書き出すログ移管ステップを実行させる、
制御方法。
【請求項８】
前記装置内で実行されるプロセス間通信を監視し、該プロセス間通信の呼び手と受け手とを対応付けて記憶するステップをさらに含む、請求項７に記載の制御方法。
【請求項９】
前記障害が発生したプロセスおよび該プロセスと依存関係にあるプロセスのリストを作成するステップをさらに含む、請求項７または８に記載の制御方法。
【請求項１０】
前記メモリは、プロセス毎に割り当てられたログ記憶領域を備え、前記メモリに記録するステップは、前記ログ記憶領域をメモリ上に割り当てるためのメモリ管理テーブルを作成するステップを含む、請求項７〜９のいずれか１項に記載の制御方法。
【請求項１１】
前記メモリ管理テーブルは、前記ログ記憶領域のメモリサイズとプロセス名を対応付けて格納するテーブルである、請求項１０に記載の制御方法。
【請求項１２】
前記ログ移管ステップは、前記プロセス間依存リストと前記メモリ管理テーブルとを照合して、前記障害が発生したプロセスおよび該プロセスと依存関係にあるプロセスを特定し、特定したプロセスに係るログを前記メモリから読み出すステップを含む、請求項１０または１１に記載の制御方法。
【請求項１３】
コンピュータに対して、請求項７〜１２のいずれか１項に記載の制御方法のステップを実行させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、画像形成装置のログデータ管理に関し、より詳細には、画像形成装置の性能を低下することなく、障害解析に最低限必要なログを確実に記録することができる画像形成装置、制御方法、およびプログラムに関する。
【背景技術】
【０００２】
近年、ＭＦＰ(Multi Function Peripheral）の高性能化・高機能化に伴って、障害時の解析のための多大なデバッグログが短時間に出力されるようになった。従来、このようなログは、ＭＦＰの印刷ジョブ等の基本処理を妨害しないように、記録速度が速いＲＡＭ等のメモリに記録されることが多い。しかし、一般にＲＡＭ等のメモリは記憶容量が小さいことから、ログの記録処理は循環式を採用しており、メモリ上の古いログが新しいログによって順次上書き消去されてしまっていた。このため、仮に、このように上書き消去されたログの中に、障害に係る重大な情報が含まれていた場合、障害時の解析ができなくなってしまうという問題があった。
【０００３】
この点につき、特開２０００−１４８４３０号公報（特許文献１）は、プリンタのメモリに格納したログファイルを、大記憶容量かつ長期保存が可能なハードディスク装置に書き換えることにより、大量のログファイルの保存を可能にしたプリンタメンテナンスシステムを開示する。
【０００４】
しかし、このような構成をＭＦＰに適用した場合、メモリに格納したログをハードディスクに記録する処理をＭＦＰの基本処理よりも優先させると、そのタイミングによっては、ＭＦＰの性能に大きな影響を及ぼしてしまう。一方、ＭＦＰの印刷出力制御のリアルタイム性を担保すべく、ログの書き出しよりもＭＦＰの基本処理を優先させると、今度は、その間に古いログが上書きされてしまい、ログデータのとりこぼしが発生するという二律背反が生じてしまう。
【０００５】
この点につき、特開２００８−１６６８９９号公報（特許文献２）は、メモリ上のログをハードディスクに書き換える際、ＭＦＰの基本処理と競合する場合には、そのログを不揮発メモリであるＮＶＲＡＭに一時的に退避した後、基本処理が終了した後に改めてハードディスクに書き換えることにより、ＭＦＰの印刷パフォーマンスを低下させることなく、ログをもれなく保存することのできる装置を開示する。
【０００６】
しかし、特許文献２が開示する構成においても、仮に、ＭＦＰの基本処理と競合するタイミングでＮＶＲＡＭの容量を超える多量のログ書き出しが実行された場合には、特許文献１に開示された構成と同様に、ログの一部が上書き消去されて失われる可能性が依然として残るものであった。
【０００７】
また、特許文献１および特許文献２は、いずれも、全てのログを無選別にハードディスクに書き換える構成を採用しているため、障害解析時に、ハードディスク装置に記録された大量のログの中から障害解析に必要なログを探し出すことは、多大な労力を要する作業であった。
【特許文献１】特開２０００−１４８４３０号公報
【特許文献２】特開２００８−１６６８９９号公報
【発明の開示】
【発明が解決しようとする課題】
【０００８】
本発明は、上記従来技術における課題に鑑みてなされたものであり、本発明は、ＭＦＰの性能にほとんど影響を及ぼすことなく、障害解析に最低限必要なログを確実に記録することができる画像形成装置、制御方法、およびプログラムを提供することを目的とする。
【課題を解決するための手段】
【０００９】
本発明者は、ＭＦＰの性能にほとんど影響を及ぼすことなく、障害解析に最低限必要なログを確実に記録することができる画像形成装置につき鋭意検討した結果、ログをその重要度によって分類し、重要度が高いログはハードディスクに直接記録する一方、重要度が低いログについては、メモリ上に循環して記録させるという二種類の記録方式を採用し、さらに、循環メモリに記録されるログのうち、障害に関連するプロセスに係るログのみをハードディスクに書き出す構成を見出し、本発明に至ったのである。
【００１０】
本発明においては、ログに重要度を付与し、その重要度が高いものについては基本的にハードディスクに記録する。これらのログは少量であるため、ＭＦＰの性能にほとんど影響を与えない。一方、重要度の低いログについては、プロセスごとに設けられた循環メモリに記録する。システム内でエラーが発生した場合、エラーに関連するプロセスに係るログのみをメモリから読み出し、これをハードディスクに書き出す。このような構成を採用することによって、平常時のログ記録は、処理速度の速いメモリ記録であるためＭＦＰの性能にほとんど影響を与えず、障害発生時には、障害解析に必要なデバッグレベルのログが確実に保存される。さらに、障害解析に必要なログしか記録しないため、後の障害解析時において必要なログを探し出す労力を大幅に軽減することが可能となる。
【００１１】
すなわち、本発明によれば、装置のジョブ履歴をログデータとして保存するログ保存手段を備える画像形成装置であって、前記ログ保存手段は、装置内で実行される各プロセスから重要度の高低が予め定義されたログの記録要求を受信するログ受信部と、高重要度が定義されたログについては記録先としてハードディスクを選択し、低重要度が定義されたログについては記録先としてメモリを選択するログ記録先振分部と、前記ハードディスクが記録先として選択された前記ログをハードディスクに記録するハードディスク記録部と、前記メモリが記録先として選択された前記ログをプロセス毎にメモリに記録するメモリ記録部と、前記装置内で障害が発生したプロセスを特定して通知する障害発生プロセス通知部と、前記通知に応答して、前記障害が発生したプロセスおよび該プロセスと依存関係にあるプロセスのログのみを前記メモリから読み出し、当該読み出されたログを前記ハードディスクに書き出すログ移管部とを含む、画像形成装置が提供される。本発明においては、前記ログ保存手段は、さらに、前記装置内で実行されるプロセス間通信を監視し、該プロセス間通信の呼び手と受け手とを対応付けて記憶するためのプロセス間通信管理部を含むことができ、さらに、前記障害が発生したプロセスおよび該プロセスと依存関係にあるプロセスのリストを作成するプロセス間依存リスト作成部を含むことができる。本発明においては、前記メモリは、プロセス毎に割り当てられたログ記憶領域を備え、前記メモリ記録部は、前記ログ記憶領域をメモリ上に割り当てるためのメモリ管理テーブルを作成するメモリ管理部を含むことができ、前記メモリ管理テーブルは、前記ログ記憶領域のメモリサイズとプロセス名を対応付けて格納するテーブルとすることができる。さらに、本発明においては、前記ログ移管部は、前記プロセス間依存リストと前記メモリ管理テーブルとを照合して、前記障害が発生したプロセスおよび該プロセスと依存関係にあるプロセスを特定し、特定したプロセスに係るログを前記メモリから読み出すことができる。
【００１２】
また、本発明によれば、画像形成装置に対して、装置のジョブ履歴をログデータとして保存する処理を実行させるためのコンピュータ実行可能な制御方法であって、該方法は、画像形成装置に対して、装置内で実行される各プロセスから重要度の高低が予め定義されたログの記録要求を受信するステップと、高重要度が定義されたログについては記録先としてハードディスクを選択し、低重要度が定義されたログについては記録先としてメモリを選択するステップと、前記ハードディスクが記録先として選択された場合には、前記ログをハードディスクに記録し、前記メモリが記録先として選択された場合には、前記ログをプロセス毎にメモリに記録するステップとを実行させ、前記装置内で障害が発生したプロセスを特定する通知を受領した場合には、障害が発生したプロセスおよび該プロセスと依存関係にあるプロセスのログを前記メモリから全て読み出し、当該読み出されたログを前記ハードディスクに書き出すログ移管ステップを実行させる、制御方法が提供される。本発明においては、前記装置内で実行されるプロセス間通信を監視し、該プロセス間通信の呼び手と受け手とを対応付けて記憶するステップをさらに含むことができ、前記障害が発生したプロセスおよび該プロセスと依存関係にあるプロセスのリストを作成するステップをさらに含むことができる。本発明においては、前記メモリは、プロセス毎に割り当てられたログ記憶領域を備え、前記メモリに記録するステップは、前記ログ記憶領域をメモリ上に割り当てるためのメモリ管理テーブルを作成するステップを含むことができ、前記メモリ管理テーブルは、前記ログ記憶領域のメモリサイズとプロセス名を対応付けて格納するテーブルとすることができる。また、本発明においては、前記ログ移管ステップは、前記プロセス間依存リストと前記メモリ管理テーブルとを照合して、前記障害が発生したプロセスおよび該プロセスと依存関係にあるプロセスを特定し、特定したプロセスに係るログを前記メモリから読み出すステップを含むことができる。
【００１３】
さらに、本発明によれば、コンピュータに対して、上記制御方法のステップを実行させるためのプログラムが提供される。
【発明を実施するための最良の形態】
【００１４】
以下、本発明を、実施形態をもって説明するが、本発明は後述する実施形態に限定されるものではない。
【００１５】
本実施形態の画像形成装置は、ＣＰＵ、ＲＡＭ、ＲＯＭ、ハードディスク装置を含んで構成されており、ＵＮＩＸ（登録商標）、ＬＩＮＵＸ（登録商標）などのＯＳにより制御され、操作パネルからのユーザ指令に応答して、コピー、ファクシミリ、イメージ・スキャナなどの機能をユーザに提供し、また、外部コンピュータからの入力に応答してネットワーク・プリンタやファクシミリとしても機能するＭＦＰとして構成することができる。以下の説明においては、本実施形態の画像形成装置をＭＦＰとして参照する。本実施形態のＭＦＰは、上記複数の機能を提供するためのアプリケーション層を備えており、さらに、当該アプリケーション層から各ジョブに係るログの記録要求を受付け、障害解析に必要なログを確実に保存するためのログ保存手段を備えている。
【００１６】
図１は、本実施形態のＭＦＰが備えるログ保存手段１０の機能ブロック図を示す。本実施形態のログ保存手段１０は、ログ受信部１２、ログ記録先振分部１４、メモリ記録部１６、ハードディスク記録部１８、プロセス間通信管理部２０、障害発生通知部２２、プロセス間依存リスト作成部２４、およびログ移管部２６を含んで構成されている。
【００１７】
まず、図１〜図４を参照して、本実施形態のログ保存手段１０が実行するログ記録処理について、以下説明する。
【００１８】
ログ受信部１２は、ＭＦＰのアプリケーション層からプロセス毎に送信されるログ記録要求を受信する。なお、本実施形態においては、各プロセスがログの重要度を指定し、当該ログの重要度を示す情報とログ本文とを記述したログ記録要求をログ受信部１２に対して送信する。本実施形態においては、例えば、システム動作状態、ユーザ操作、通信状態等のプロセスに係るログなど、障害解析のために使用する蓋然性の高いログについては、その重要度を「高」として定義し、各モジュールのデバッグ専用ログ等については、その重要度を「低」として定義して指定することができる。ログ受信部１２は、各プロセスからログ記録要求を受信すると、当該プロセスについてＯＳが割り当てたプロセスＩＤをログ記録要求に付加した上で、これをログ記録先振分部１４に送信する。なお、本実施形態においては、ログ保存手段１０に「プロセス名／重要度」の対応関係を記述したテーブルを設け、ログ受信部１２が各プロセスからログ記録要求を受信する度に、上記テーブルを参照し、プロセス名に対応する重要度をログ記録要求に付加するという構成を採用することもできる。また、本実施形態においては、ログ記録要求をログ記録先振分部１４に送信する前に、後の障害解析の便宜を図ってログのフォーマットを整形することが好ましい。
【００１９】
ログ記録先振分部１４は、ログ記録要求の記述内容からそのログの重要度を判断し、その重要度に基づいて記録先を決定する。具体的には、ログ記録先振分部１４は、重要度が「低」と記述されたログ記録要求をメモリ記録部１６に送信し、重要度が「高」と記述されたログ記録要求をハードディスク記録部１８に送信する。ログ記録先振分部１４からログ記録要求を受信したハードディスク記録部１８は、ログ記録要求からログ本文を取り出し、これをハードディスク２８内に設けられたログ記憶領域に記録する。一方、ログ記録先振分部１４からログ記録要求を受信したメモリ記録部１６は、ログ記録要求からログ本文を取り出し、これをメモリ３０内に設けられたログ記憶領域に記録する。以上、説明したログの記録処理について、図２を参照してより詳細に説明する。
【００２０】
図２は、本実施形態のＭＦＰにおけるログ保存手段１０が実行するログ記録処理のフローチャートを示す。まず、ステップ１０１において、ＭＦＰのアプリケーション層で実行されるプロセスからログ記録要求を受信すると、ステップ１０２に進み、受信したログ記録要求に当該プロセスのプロセスＩＤを付加する。次にステップ１０３において、ログ記録要求に含まれる情報に基づいてログの重要度が判定される。ステップ１０３において、ログの重要度が「高」と判定された場合には、ステップ１０４に進み、ハードディスク２８のログ記憶領域にログ本文が記録される。なお、本実施形態においては、限定した一部のプロセスに係るログについてのみ、重要度を「高」と定義するので、ハードディスク２８に直接書き込まれるログはごく少量であり、また、バッファなどのロギング機構を用いることによってＭＦＰの基本処理と競合する時間を無視できるほど小さくすることができるので、ＭＦＰの性能にほとんど影響を与えない。
【００２１】
一方、ステップ１０３において、ログの重要度が「低」と判定された場合には、ステップ１０５に進み、メモリ３０のログ記憶領域にログ本文が記録される。メモリ３０は、高速なアクセスが可能な揮発性記憶媒体であるため、ステップ１０５の処理もＭＦＰの性能にほとんど影響を与えない。なお、本実施形態におけるメモリ記録部１６は、さらにメモリ管理部３２を含む。メモリ管理部３２は、メモリ管理テーブル３４を管理し、メモリ管理テーブル３４を使用して、メモリ３０上にプロセス毎のログ記憶領域を割り当てる。
【００２２】
図３は、本実施形態におけるメモリ管理テーブル３４を例示する。図３（ａ）に示されるように、メモリ管理テーブル３４は、「プロセスＩＤ」、「プロセス名」、「メモリキー」、「メモリサイズ」の４つのフィールドを備えており、デフォルトでは、プロセス名とこれに対応するメモリサイズが格納されている。図３（ａ）に示される例においては、「プロセスＸＸＸ」に係るログについて割り当てられるメモリ３０上のログ記憶領域のサイズが「５００ｂｙｔｅ」であり、「プロセスＹＹＹ」に係るログについて割り当てられるメモリ３０上のログ記憶領域のサイズが「１００ｂｙｔｅ」であることが予め規定されている。なお、本実施形態においては、メモリ管理テーブル３４は頻繁にアクセスされるためメモリ等の主記憶にキャッシュされることが好ましく、また、テーブルそのものを環境変数として設定することもできる。
【００２３】
以下、メモリ管理部３２を含むメモリ記録部１６が実行するログの記録処理について、図４に示すフローチャートをもとに、適宜、図３に示すメモリ管理テーブル３４を参照しながら説明する。
【００２４】
図４は、本実施形態におけるメモリ記録部１６が実行するログ記録処理のフローチャートを示す。メモリ記録部１６がログ記録先振分部１４からログ記録要求を受信すると、ステップ２０１において、メモリ管理部３２がログ記録要求に記述されたプロセス名に基づき、メモリ管理テーブル３４を参照する。次にステップ２０２において、プロセス名がメモリ管理テーブル３４に存在しているか否かが判断される。例えばここで、ログ記録要求が仮に「プロセスＺＺＺ」に係るものであった場合、プロセス名「ＺＺＺ」はメモリ管理テーブル３４しないと判断され（ステップ２０２、Ｎｏ）、ステップ２０３に進んで、そのログ記録要求は破棄された後、図２に示すメイン処理に戻って処理を終了する。上述したように、本実施形態によれば、全てのログについて自動的に記録するのではなく、必要なプロセスのみをメモリ管理テーブル３４に登録することによって、そのログを選択的に保存することができる。
【００２５】
一方、例えば、ログ記録要求が「プロセスＸＸＸ」に係るものであった場合、ステップ２０２において、プロセス名「ＸＸＸ」はメモリ管理テーブル３４すると判断され（ステップ２０２、Ｙｅｓ）、ステップ２０４に進む。ステップ２０４においては、「プロセスＸＸＸ」についてログ記憶領域が割り当てられているか否かが判断される。図３（ａ）に示すデフォルトの状態においては、「プロセスＸＸＸ」についてログ記憶領域が割り当てられていないので（ステップ２０４、Ｎｏ）、ステップ２０５に進む。ステップ２０５においては、図３（ｂ）に示すように、ログ記録要求に含まれるプロセスＩＤ（この例においては「５０」）がメモリ管理テーブル３４の「プロセスＩＤ」フィールドに格納されるとともに、当該プロセスに一意のメモリキー（この例においては「abcdefgh」）が設定され「メモリキー」フィールドに格納される。次に、ステップ２０６において、設定されたメモリキー（「abcdefgh」）が示すメモリ上の領域を「プロセスＸＸＸ」のログ記憶領域として割り当てる。
【００２６】
図３（ｃ）は、さらに、「プロセスＹＹＹ」に係るログ記録要求を受信した場合のメモリ管理テーブル３４を示す。図３（ｃ）に示すように、「プロセスＩＤ」フィールドに「プロセスＹＹＹ」のプロセスＩＤ（この例においては「８０」）が格納され、当該プロセスに一意のメモリキー（この例においては「opqrstuv」）が設定されている。その後、ステップ２０７に進み、上述した手順でプロセス毎に設定されたログ記憶領域に、該当するプロセスのログ記録要求に含まれるログ本文を記憶した後、図２に示すメイン処理に戻って処理を終了する。例えば、この後、さらに、「プロセスＸＸＸ」に係るログ記録要求を受信した場合には、既に「プロセスＸＸＸ」についてログ記憶領域が割り当てられているので（ステップ２０４、Ｙｅｓ）、図３（ｄ）に示すように、メモリ管理テーブル３４を更新することなく、そのままステップ２０７に進み、メモリキー（「abcdefgh」）が示すログ記憶領域にログ本文を追加した後、同じく、図２に示すメイン処理に戻って処理を終了する。
【００２７】
本実施形態においては、上述した手順によって、ログがプロセス毎にメモリに記録される。なお、本実施形態においては、メモリ管理テーブル３４の「メモリサイズ」をプロセスの重要度に応じて適宜設定することができる。すなわち、ログの記憶方式として循環式を採用する場合には、割り当てられたメモリサイズを超えた時点で、古いログは順次新しいログに上書きされて消失するが、重要度の高いプロセスについては、割り当てるメモリサイズを大きく設定することによってメモリ上にログが残存する時間を長くすることができる。
【００２８】
以上、説明したように、本実施形態のログ保存手段１０によれば、重要度が高いログについては直接ハードディスクに記録するため、漏れのない確実なログ保存が可能となる。一方、その他の重要度の低いログについて頻繁に実行される記録処理については、処理速度の速いメモリ記録を採用するため、ＭＦＰの性能にほとんど影響を与えることはなく、また、プロセス毎に分割された領域にログが記憶されるため、障害解析時に、目的のプロセスのログのみを高速に参照することが可能になる。以上、本実施形態のメモリ記録部１６が実行するログの記録処理について説明してきたが、次に、障害発生時におけるログの保存処理について、図１および図５〜図８を参照して説明する。
【００２９】
図１に示すように、本実施形態のＭＦＰにおけるログ保存手段１０は、プロセス間通信管理部２０をさらに備える。ＭＦＰ内で実行されるプロセスのうち、互いに連携するプロセスは、セマフォ、共有メモリ、メッセージキューなどによって実装されるプロセス間通信によって情報のやり取りを行なうが、本実施形態におけるプロセス間通信管理部２０は、このプロセス間通信を監視することによって、装置内で実行されるプロセス間に発生したデータ通信の履歴を残す。具体的には、プロセス間通信管理部２０は、プロセス間通信テーブル３６を管理しており、プロセス間でデータ通信が発生する度にこれを更新する。
【００３０】
図５は、本実施形態におけるプロセス間通信テーブル３６を例示する。図５（ａ）に示されるように、プロセス間通信テーブル３６は、プロセス間通信における呼び手のプロセス名を格納する「呼び手一覧」フィールドと、それに対する受け手のプロセス名を格納する「受け手一覧」フィールドを備えており、呼び手のプロセス名と受け手のプロセス名とを対応付けて格納するように構成されている。図６は、プロセス間通信管理部２０が実行するプロセス間通信テーブル３６の更新処理のフローチャートを示す。以下、図５および図６を参照して、プロセス間通信テーブル３６の更新処理について説明する。
【００３１】
まず、ステップ３０１において、装置内で実行されるプロセス間に通信があったか否かが判断される。この判断は、プロセス間の通信を検出するまで繰り返される（ステップ３０１、Ｎｏ）。プロセス間の通信を検出した場合（ステップ３０１、Ｙｅｓ）、ステップ３０２に進み、当該プロセスの呼び手（Ｃ）のプロセス名と受け手（Ｒ）のプロセス名を取得する。次に、ステップ３０３において、呼び手（Ｃ）のプロセス名がプロセス間通信テーブル３６に既に登録されているか否かが判断される。呼び手（Ｃ）がプロセス間通信テーブル３６に既に登録されている場合には（ステップ３０３、Ｙｅｓ）、ステップ３０４に進み、受け手（Ｒ）のプロセス名が呼び手（Ｃ）に関連付けられて登録されているか否かが判断される。呼び手（Ｃ）に関連付けられて登録されている場合には（ステップ３０４、Ｙｅｓ）、ステップ３０１に戻り、再び、プロセス間の通信を監視する。
【００３２】
例えば、プロセス間通信テーブル３６が図５（ａ）に示す状態にあった場合に、プロセス「ＺＺＺ」からプロセス「ＭＭＭ」への通信を検出したことを想定すると、プロセス名「ＺＺＺ」とプロセス名「ＭＭＭ」とは、それぞれ呼び手（Ｃ）および受け手（Ｒ）として、既に、関連付けられて登録されているので、プロセス間通信テーブル３６は更新されない。
【００３３】
次に、プロセス「ＸＸＸ」からプロセス「ＤＤＤ」への通信を検出した場合を想定する。プロセス名「ＸＸＸ」は呼び手一覧に登録されているので（ステップ３０３、Ｙｅｓ）、ステップ３０４に進むが、プロセス名「ＤＤＤ」はプロセス「ＸＸＸ」に対応する受け手一覧に登録されていないので（ステップ３０４、Ｎｏ）、ステップ３０５に進み、図５（ｂ）に示されるように、プロセス名「ＤＤＤ」がプロセス名「ＸＸＸ」に対応する受け手一覧に新たに登録される。
【００３４】
次に、プロセス「ＣＣＣ」からプロセス「ＹＹＹ」への通信を検出した場合を想定する。プロセス名「ＣＣＣ」は呼び手一覧に登録されていないので（ステップ３０３、Ｎｏ）、ステップ３０６に進み、まず、プロセス名「ＣＣＣ」が呼び一覧に新たに登録され、続いて、ステップ３０５に進んで、プロセス名「ＹＹＹ」がプロセス名「ＣＣＣ」に対応する受け手一覧に新たに登録される。図５（ｃ）は、プロセス間通信テーブル３６の受け手一覧および呼び手一覧が共に更新された様子を示す。上述した手順により、プロセス間のデータ通信に伴って、呼び手／受け手の新たな関係が発生する度に、プロセス間通信テーブル３６が更新される。なお、上述したプロセス間通信テーブル３６の更新処理は、ＭＦＰが稼働している間、バックグラウンドで継続して実行される。
【００３５】
本実施形態におけるログ保存手段１０は、既に述べたように、重要度「低」と定義されたログは、メモリ３０上のプロセス毎に設けられた領域に循環式で記録される。従って、装置稼働中、特段の障害が発生しない間は、ログは古いものから順番に上書き消去されていくが、これらのログは障害と関連性の低いものであるので何ら問題はない。一方、一旦、装置内で障害が発生した場合には、障害解析のために、当該障害と関連性の高いプロセスに係るログを保存しておく必要がある。この点につき、本実施形態におけるログ保存手段１０は、障害を発生したプロセスおよび当該プロセスと依存関係にあるプロセスに係るログを選択的にメモリ３０からハードディスクに移管して保存する。本実施形態においては、図１に示す障害発生通知部２２、プロセス間依存リスト作成部２４、およびログ移管部２６によって、上述した機能が実現される。この点について、図１ならびに図７〜図９を参照して以下説明する。
【００３６】
図７は、ログ移管部２６によって実行されるログ移管処理のフローチャートを示す。まず、ステップ４０１において、障害発生通知部２２から障害発生通知を受領したか否かが判断される。障害発生通知部２２は、装置内で実行されるプロセスを監視しており、各プロセスに障害が発生した時点で、障害が発生したプロセスに割り当てられたプロセスＩＤを記述した障害発生通知を発行し、これをログ移管部２６に通知する。障害発生通知を受領しない場合には（ステップ４０１、Ｎｏ）、その処理を終了する。一方、障害発生通知を受領した場合には（ステップ４０１、Ｙｅｓ）、ステップ４０２に進み、プロセス間依存リスト作成処理が実行される。具体的には、ログ移管部２６は、障害発生通知部２２から障害発生通知を受領すると、当該通知に含まれるプロセスＩＤを用いてメモリ管理テーブル３４を検索し、障害が発生したプロセスのプロセス名を特定し、当該プロセス名をプロセス間依存リスト作成部２４に通知して、障害を発生したプロセスおよび当該プロセスと依存関係にあるプロセスを列挙したリストの作成を依頼する。以下、この点について、図８および図９を参照して説明する。
【００３７】
図８は、プロセス間依存リスト作成部２４が実行するプロセス間依存リスト作成処理のフローチャートを示す。なお、以下の説明においては、障害発生通知に記述されるプロセス名が「ＸＸＸ」であり、照会時のプロセス間通信テーブル３６が図９（ａ）に示すものであった場合を想定して行なう。まず、ステップ５０１において、障害発生通知部２２から受領した障害発生通知に記述されるプロセス名「ＸＸＸ」が図９（ｂ）に例示するプロセス間依存リスト４０に追加される。次に、ステップ５０２において、プロセス名「ＸＸＸ」とプロセス間通信テーブル３６とを照合する。ステップ５０２において、障害発生通知に記述されたプロセス名が「ＸＸＸ」がプロセス間通信テーブル３６の呼び手一覧に登録されているか否かが判断される。
【００３８】
図９（ａ）に示されるように、プロセス名「ＸＸＸ」は呼び手一覧に登録されているので（ステップ５０２、Ｙｅｓ）、ステップ５０３に進み、プロセス名「ＸＸＸ」を呼び手とする受け手一覧に登録されているプロセス名が全て取得され、プロセス間依存リスト４０に追加される。図９（ａ）に示されるように、プロセス名「ＸＸＸ」を呼び手とする受け手一覧には、「ＹＹＹ」、「ＺＺＺ」、「ＡＡＡ」の３つのプロセス名が登録されており、これらがプロセス間依存リスト４０に追加される。したがって、ステップ５０３が実行された段階でプロセス間依存リスト４０には、「ＸＸＸ」、「ＹＹＹ」、「ＺＺＺ」、「ＡＡＡ」の４つのプロセス名が登録される。
【００３９】
次にステップ５０４に進み、リストアップされた各プロセス（すなわち、「ＸＸＸ」、「ＹＹＹ」、「ＺＺＺ」、「ＡＡＡ」）を呼び手とする受け手一覧に登録されているプロセス名が全て取得され、プロセス間依存リスト４０に追加される。ここで「ＸＸＸ」の受け手は既にリストアップされているので、「ＹＹＹ」、「ＺＺＺ」、「ＡＡＡ」を呼び手とする受け手について、プロセス間通信テーブル３６が照合される。図９（ａ）に示されるように、プロセス名「ＹＹＹ」を呼び手とする受け手一覧には、プロセス名「ＣＣＣ」、「ＸＸＸ」が登録されており、プロセス名「ＺＺＺ」を呼び手とする受け手一覧には、プロセス名「ＭＭＭ」が登録されており、プロセス名「ＡＡＡ」を呼び手とする受け手一覧には、プロセス名「ＢＢＢ」、「ＭＭＭ」が登録されている。したがって、ステップ５０４においては、新たに、「ＣＣＣ」、「ＭＭＭ」、「ＢＢＢ」がプロセス間依存リスト４０に追加される。
【００４０】
その後、ステップ５０５において、ステップ５０４の実行回数が予め規定した回数Ｎに達しているか否かが判断される。本実施形態においては、ステップ５０４の処理を複数回繰り返すことによって、障害が発生したプロセス「ＸＸＸ」と依存関係のあるプロセスをリストアップすることができる。本実施形態においては、「Ｎ」の値によって、プロセス間の依存関係の強さについて設定することができ、障害解析における費用対効果の観点から「Ｎ」の値を適宜設定することができる。ここでは、説明の便宜のため、Ｎ＝１として設定した場合を例にとって説明を続ける。
【００４１】
ステップ５０４が1回実行されたので（ステップ５０５、Ｙｅｓ）、ステップ５０６に進み、障害発生通知に記述されたプロセス名が「ＸＸＸ」がプロセス間通信テーブル３６の受け手一覧に登録されているか否かが判断される。図９（ａ）に示されるように、プロセス名「ＸＸＸ」は受け手一覧にも登録されているので（ステップ５０６、Ｙｅｓ）、ステップ５０７に進み、プロセス名「ＸＸＸ」を受け手とする呼び手一覧に登録されているプロセス名が全て取得され、プロセス間依存リスト４０に追加される。図９（ａ）に示されるように、プロセス名「ＸＸＸ」を受け手とする呼び手一覧には、「ＹＹＹ」、「ＤＤＤ」の２つのプロセス名が登録されており、「ＹＹＹ」は既にリスト上に存在するので、図９（ｂ）に示されるように、プロセス名「ＤＤＤ」が新たにプロセス間依存リスト４０に追加される。したがって、ステップ５０７が実行された段階でプロセス間依存リスト４０には、「ＸＸＸ」、「ＹＹＹ」、「ＺＺＺ」、「ＡＡＡ」、「ＣＣＣ」、「ＭＭＭ」、「ＢＢＢ」、「ＤＤＤ」の８つのプロセス名が登録される。
【００４２】
次にステップ５０８に進み、リストアップされた各プロセス（すなわち、「ＸＸＸ」、「ＹＹＹ」、「ＺＺＺ」、「ＡＡＡ」、「ＣＣＣ」、「ＭＭＭ」、「ＢＢＢ」、「ＤＤＤ」）を受け手とする呼び手一覧に登録されているプロセス名が全て取得され、プロセス間依存リスト４０に追加される。ここで「ＸＸＸ」、「ＹＹＹ」、「ＺＺＺ」、「ＡＡＡ」、「ＣＣＣ」、「ＭＭＭ」、「ＢＢＢ」を受け手とする呼び手「ＸＸＸ」、「ＹＹＹ」、「ＺＺＺ」、「ＡＡＡ」は既にリストアップされているので、図９（ｂ）に示されるように、「ＤＤＤ」を受け手とする呼び手「ＥＥＥ」のみが新たにプロセス間依存リスト４０に追加される。
【００４３】
その後、ステップ５０９において、ステップ５０８の実行回数が予め規定した回数Ｎに達しているか否かが判断される。ステップ５０９を設けた趣旨は、ステップ５０６と同様であり、ここでは、同様に説明の便宜のため、Ｎ＝１として設定した場合を例にとって説明を続ける。ステップ５０８が1回実行されたので（ステップ５０９、Ｙｅｓ）、処理は図７に示すメイン処理に戻る。上述した処理を通して、プロセス間依存リスト４０には、図９（ｂ）に示されるように、「ＸＸＸ」、「ＹＹＹ」、「ＺＺＺ」、「ＡＡＡ」、「ＣＣＣ」、「ＭＭＭ」、「ＢＢＢ」、「ＤＤＤ」、「ＥＥＥ」の９つのプロセス名がリストアップされることになる。なお、仮に、障害発生通知に記述されたプロセス名がプロセス間通信テーブル３６の呼び手一覧にも受けて一覧にも登録されていない場合には（ステップ５０２、Ｎｏ／ステップ５０６、Ｎｏ）、障害発生通知に記述されたプロセス名のみをプロセス間依存リスト４０に追加した後、図７に示すメイン処理に戻る。
【００４４】
再び、図７を参照して説明を続ける。ステップ４０３において、ログ移管部２６は、プロセス間依存リスト作成部２４が作成したプロセス間依存リスト４０と図３に例示したメモリ管理テーブル３４を照合し、プロセス間依存リスト４０にリストアップされたプロセス名に対応するメモリキーをメモリ管理テーブル３４から取得する。次に、ステップ４０４において、ログ移管部２６は、取得したメモリキーが示すメモリ３０上のログ記憶領域にアクセスして、当該領域に格納されているログを全て読み出した後、ステップ４０５において、読み出したログをハードディスク２８に書き出し、処理を終了する。
【００４５】
以上、説明したように、本実施形態のログ保存手段１０によれば、障害発生時には、障害が発生したプロセスに依存するプロセスのログがメモリからハードディスクに移管されるため、後の障害解析に必要なログを確実に取得・保存することが可能になる。また、本実施形態によれば、障害解析に最低限必要なログのみをハードディスクに記録するため、後の障害解析において、必要なログを探し出す労力が大幅に軽減することができる。
【００４６】
なお、上述した実施形態の各機能は、アセンブリ言語、Ｃ、Ｖｉｓｕａｌ  Ｃ、Ｃ＋＋、Ｖｉｓｕａｌ  Ｃ＋＋、Ｊａｖａ（登録商標）、Ｊａｖａ（登録商標）Ｂｅａｎｓ、Ｊａｖａ（登録商標）Ａｐｐｌｅｔ、Ｊａｖａ（登録商標）Ｓｃｒｉｐｔ、Ｐｅｒｌ、Ｒｕｂｙなど、レガシープログラミング言語やオブジェクト指向プログラミング言語などで記述された装置実行可能なプログラムにより実現でき、装置可読な記録媒体に格納して頒布することができる。
【００４７】
これまで本発明について実施形態をもって説明してきたが、本発明は上述した実施形態に限定されるものではなく、他の実施形態、追加、変更、削除など、当業者が想到することができる範囲内で変更することができ、いずれの態様においても本発明の作用・効果を奏する限り、本発明の範囲に含まれるものである。
【図面の簡単な説明】
【００４８】
【図１】本実施形態の画像形成装置が備えるログ保存手段の機能ブロック図。
【図２】本実施形態のログ保存手段が実行するログ記録処理のフローチャート。
【図３】本実施形態におけるメモリ管理テーブルを示す図。
【図４】本実施形態のメモリ記録部が実行するログ記録処理のフローチャート。
【図５】本実施形態におけるプロセス間通信テーブルを示す図。
【図６】本実施形態のプロセス間通信管理部が実行するプロセス間通信テーブルの更新処理のフローチャート。
【図７】本実施形態のログ移管部が実行するログ移管処理のフローチャート。
【図８】本実施形態のプロセス間依存リスト作成部が実行するプロセス間依存リスト作成処理のフローチャート。
【図９】本実施形態におけるプロセス間通信テーブルとプロセス間依存リストを示す図。
【符号の説明】
【００４９】
１０…ログ保存手段、１２…ログ受信部、１４…ログ記録先振分部、１６…メモリ記録部、１８…ハードディスク記録部、２０…プロセス間通信管理部、２２…障害発生通知部、２４…プロセス間依存リスト作成部、２６…ログ移管部、２８…ハードディスク、３０…メモリ、３２…メモリ管理部、３４…メモリ管理テーブル、３６…プロセス間通信テーブル、４０…プロセス間依存リスト
【図１】
2010152838.tif 000003
【図２】
2010152838.tif 000004
【図３】
2010152838.tif 000005
【図４】
2010152838.tif 000006
【図５】
2010152838.tif 000007
【図６】
2010152838.tif 000008
【図７】
2010152838.tif 000009
【図８】
2010152838.tif 000010
【図９】
2010152838.tif 000011