(57)【要約】【課題】画像処理装置の機器ログ情報、及び画像処理装置上のアプリがアプリPFに対し記録を指示したアプリログ情報並びにアプリ自身が生成し記録したログ情報ファイルのアプリログ情報を収集する。【解決手段】ログ管理アプリ361が、アプリからの指示に応じてアプリ情報をログファイルに記録し、イベントの発生に応じてイベントログ情報をログファイルに記録するとともに、アプリがログを記録して管理するアプリファイル収集する。そして記録したログファイルおよび収集したアプリファイルを一括して外部装置に送信する。【選択図】図4
2017091108.tif 000002
【特許請求の範囲】
【請求項１】
アプリケーションをプラットフォームの上で動作させる情報処理装置であって、
前記プラットフォームの上で動作するログ管理アプリケーションが、
前記情報処理装置内でイベントが発生した際に、当該イベントのログ情報を前記プラットフォームを介して取得してログファイルに記録する第１記録手段と、
前記ログ管理アプリケーションとは異なる、前記プラットフォームの上で動作する第１の種類のアプリケーションのために公開されたインターフェースを介して、前記第１の種類のアプリケーションがアプリケーション情報の書き込みを行った際に、当該書き込まれたアプリケーション情報をログファイルに記録する第２記録手段と、
前記ログ管理アプリケーションとは異なる、前記プラットフォームの上で動作する第２の種類のアプリケーションが管理しているログファイルを収集する収集手段と
を有することを特徴とする情報処理装置。
【請求項２】
前記第１記録手段および前記第２記録手段により記録されたログファイル及び前記収集手段により収集されたログファイルを一括して出力する出力手段を更に有することを特徴とする請求項１に記載の情報処理装置。
【請求項３】
前記収集手段は、収集したログファイルから、前記出力手段により既に出力した重複部分を削除して出力することを特徴とする請求項２に記載の情報処理装置。
【請求項４】
前記収集手段は、収集したログファイルから、前記出力手段により既に出力した重複部分を、前記既に出力した重複部分の末尾とサイズとに基づいて特定することを特徴とする請求項３に記載の情報処理装置。
【請求項５】
前記収集手段は、収集したログファイルのファイル名を、前記情報処理装置自身で管理している時刻を用いて変更することを特徴とする請求項１乃至４のいずれか一項に記載の情報処理装置。
【請求項６】
前記第１記録手段は、前記イベントのログ情報を、イベント発生および前記情報処理装置の起動およびファイル出力処理の少なくともいずれかのタイミングにおいて、前記プラットフォームを介して取得してログファイルに記録することを特徴とする請求項１乃至５のいずれか一項に記載の情報処理装置。
【請求項７】
前記第１記録手段は、前記情報処理装置の設定情報を取得する手段を含み、取得した設定情報も前記ログファイルとして記録することを特徴とする請求項１乃至５のいずれか一項に記載の情報処理装置。
【請求項８】
前記第１記録手段は、所定の権限を有する前記第１の種類のアプリケーションにより書き込まれたアプリケーション情報を前記ログファイルに記録することを特徴とする請求項１乃至７のいずれか一項に記載の情報処理装置。
【請求項９】
前記収集手段は、所定の権限を有する前記第２の種類のアプリケーションが管理しているログファイルを収集することを特徴とする請求項１乃至８のいずれか一項に記載の情報処理装置。
【請求項１０】
アプリケーションをプラットフォームの上で動作させる情報処理装置における情報処理方法であって、
前記プラットフォームの上で動作するログ管理アプリケーションが、
前記情報処理装置内でイベントが発生した際に、当該イベントのログ情報を前記プラットフォームを介して取得してログファイルに記録し、
前記ログ管理アプリケーションとは異なる、前記プラットフォームの上で動作する第１の種類のアプリケーションのために公開されたインターフェースを介して、前記第１の種類のアプリケーションがアプリケーション情報の書き込みを行った際に、当該書き込まれたアプリケーション情報をログファイルに記録し、
前記ログ管理アプリケーションとは異なる、前記プラットフォームの上で動作する第２の種類のアプリケーションが管理しているログファイルを収集する
ことを特徴とする情報処理方法。
【請求項１１】
アプリケーションをプラットフォームの上で動作させるコンピュータの前記プラットフォームの上で動作するログ管理アプリケーションを、
前記情報処理装置内でイベントが発生した際に、当該イベントのログ情報を前記プラットフォームを介して取得してログファイルに記録する第１記録手段と、
前記ログ管理アプリケーションとは異なる、前記プラットフォームの上で動作する第１の種類のアプリケーションのために公開されたインターフェースを介して、前記第１の種類のアプリケーションがアプリケーション情報の書き込みを行った際に、当該書き込まれたアプリケーション情報をログファイルに記録する第２記録手段と、
前記ログ管理アプリケーションとは異なる、前記プラットフォームの上で動作する第２の種類のアプリケーションが管理しているログファイルを収集する収集手段と
して機能させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、例えばプラットフォーム上で複数のアプリケーションが動作する情報処理装置、方法及びプログラムに関し、特にログを記録するログ管理アプリケーションを備える情報処理装置、方法及びプログラムに関する。
【背景技術】
【０００２】
従来の画像処理装置(Multi Function Peripheralなど)では一般的に、スキャナやプリンタなどの各種機能をアプリケーション(以下、「アプリ」)単位で動作させるアプリプラットフォーム(以下、「PF」)環境を有している。このアプリPF上にインストールされたアプリを、アプリ開発者やサービスマンなど(以下、「解析者」)がデバッグ等動作検証する場合、検証はアプリのアプリログ情報を基に行われる。このアプリログ情報は、例えばアプリが自身の設定情報や処理のイベントを記憶してファイル形式で生成し、外部情報処理装置(PCなど)に送信することで、解析者により回収される。または、例えば前記アプリPFがアプリに対するアプリログ情報を生成する手段を有している場合もある。この時、アプリPFがアプリからの指示でアプリの情報をアプリPFのログ情報としてファイル形式で記録し、解析者により外部情報処理装置から画像処理装置に接続して回収される。
【０００３】
一方で、画像処理装置は、製品に不具合があった時解析者が解析を行うために、画像処理装置の設定情報や印刷ジョブ実行など処理のイベントを機器ログ情報として記録し、外部デバイス(USBなど)を接続する等の方法で回収する仕組みを有する。
【０００４】
特許文献１ (特開2012-137831号公報)では、画像処理装置にロジックアナライザ機能を有し、ハードウェア内部の内部信号、画像処理装置上のアプリの関数実行ログ、及びユーザによる操作部操作ログを一括して記録することが行われている。また、この画像処理装置は、記録したログを外部の障害解析装置に送信している。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開2012-137831号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
画像処理装置の不具合発生時に、解析者がアプリログ情報を解析しアプリの処理に問題がないと判断できたとしても、その根本原因を究明することは難しい。その場合、機器ログ情報とアプリログ情報両方を収集して解析する必要がある。
【０００７】
ところが特許文献１の技術では、上述したようなアプリ自身が管理するログ情報を操作ログなどと一括して取り扱うことは困難である。さらに、アプリは様々であり、ログの記録の仕方も多様である。たとえば上述のようにアプリ自身がログを管理する場合もあるし、アプリ自身はログを管理せず、ロガーにより記録される場合もある。
【０００８】
本発明は上記問題を鑑みてなされたものであり、装置内で発行されたログ情報、及びプラットフォーム上のアプリケーションがプラットフォームに対して記録を指示したログ情報並びにアプリケーションが管理しているログ情報を、一括して管理できるように収集することを目的とする。
【課題を解決するための手段】
【０００９】
上記課題を解決するために、本発明は、アプリを複数記憶し動作可能なアプリPFと、
画像処理装置の機器ログ情報、及び画像処理装置上のアプリがアプリPFに対し記録を指示したアプリログ情報並びにアプリ自身が生成し記録したログ情報ファイルをアプリログ情報として生成するログ管理アプリ、
を有する画像処理装置であって、
ログ管理アプリは、アプリからアプリPFを介したアプリ動作情報ログ記録通知、及びアプリ所有ファイル回収通知を受け、各々アプリログ情報として記録する、制御手段と、
制御手段と並行して、ログ管理アプリは、画像処理装置の設定情報及びイベントを各々機器ログ情報として記録する、制御手段と、
制御手段実行後、ログ管理アプリは、ログ情報の出力通知を受けて、各々記録したログ情報を一括して出力する、制御手段と、
を有することを特徴とする。
【発明の効果】
【００１０】
本発明によれば、装置内で発行されたログ情報、及びプラットフォーム上のアプリケーションがプラットフォームに対して記録を指示したログ情報並びにアプリケーションが管理しているログ情報を、一括して管理できるように収集することができる。
【図面の簡単な説明】
【００１１】
【図１】実施形態１に係るシステム構成図
【図２】実施形態１に係る画像処理装置のハードウェア構成図
【図３】実施形態１に係る画像処理装置のソフトウェア構成図
【図４】実施形態１に係るログ管理アプリの構成図
【図５】実施形態１に係るログ管理アプリがログ収集部に記録するログの形式の説明図
【図６】実施形態１に係るアプリPFが各アプリを起動する際の、ログ管理アプリの処理のフローチャート図
【図７】実施形態１に係るログ管理アプリのログ記録処理のフローチャート図
【図８】実施形態１に係るログ管理アプリのログ出力処理のシーケンス図
【図９】実施形態２に係るログ管理アプリの機能の使用を許可するアプリのリストファイルの構成図
【図１０】実施形態２に係るログ管理アプリの機能を使用するアプリの構成図
【図１１】実施形態２に係るアプリPFのアプリ起動処理時のフローチャート図
【図１２】実施形態３に係るアプリPFのアプリ起動処理時のフローチャート図
【図１３】実施形態３に係るログ管理アプリのログ出力処理のシーケンス図
【図１４】実施形態３に係るログ管理アプリが出力するアプリファイルの説明図
【発明を実施するための形態】
【００１２】
以下、本発明を実施するための形態について図面を用いて説明する。
［実施形態１］
＜画像処理システムおよび各装置の構成＞
本実施形態のシステム構成について、図1から図3を用いて説明する。図1は、本実施形態の情報処理システム全体の構成例である。本システムは、ネットワーク102を介して、画像処理装置100と情報処理装置101から構成される。画像処理装置100は、画像形成装置、画像読取装置、画像送信機能などの各種画像処理機能を有する装置である。なお、画像処理装置100は、プリンタ、コピー、ファクス及びスキャナや、それら複数の機能を一台の筐体で実現する複合機（Multi Functional Peripheral）でもよい。情報処理装置101は、Webブラウザなどを介して画像処理装置100の操作をリモートで行うための、コンピュータなどの情報処理装置である。なお、画像処理装置100は、主たる処理対象が画像である画像処理装置と呼ぶが、画像の読み取りやプリントを遂行するための周辺機器やソフトウェアを備えた情報処理装置と呼ぶこともできる。
【００１３】
図2は、本実施形態の画像処理装置100と情報処理装置101それぞれのハードウェア構成例である。画像処理装置100は、PCなどの情報処理装置101と通信を行うネットワークＩ／Ｆ201、キーボードなどユーザ操作を受け付けるユーザ入力部202、液晶ディスプレイなど操作画面を表示するUI表示部203を有する。更に画像処理装置100は、装置全体を制御するCPU204、CPU204のワークスペースを提供するRAM205、画像原稿を読み取る読取部206、画像データを印刷する印刷部207、各種制御プログラムなどを記憶する記憶部208を有する。ここで、画像処理装置100を構成する各ユニットは、メインバス200で接続されており、相互にデータの送受信が可能である。なお、ユーザ入力部202とUI表示部203を別々のユニットとして記載しているが、これらのユニットが一体となった操作部としてもよい。またCPU204は、RAM205や記憶部208等に記憶したシステムプログラムやアプリケーションプログラムを実行することで、特定の機能を実現したり、装置を制御したりしている。システムプログラムには、オペレーティングシステムやドライバ、さらにアプリケーションプログラムを実行するためのプラットフォームとなるソフトウェアなどが含まれる。なおアプリケーションプログラムはアプリと省略されることがある。
【００１４】
情報処理装置101は、画像処理装置100などと通信を行うネットワークＩ／Ｆ211、装置全体を制御するCPU212、CPU212のワークスペースを提供するRAM213、各制御プログラムなどを記憶する記憶部214を有する。また、情報処理装置101を構成する各ユニットは、メインバス210で接続され、相互にデータの送受信が可能となる。CPU212もRAM213や記憶部214等に記憶したシステムプログラムやアプリケーションプログラムを実行することで、特定の機能を実現したり、装置を制御したりしている。
【００１５】
＜ソフトウェア構成＞
図3は、本実施形態の画像処理装置100と情報処理装置101のソフトウェア構成例である。図3に示す各機能部は、画像処理装置100/情報処理装置101それぞれが有するCPU204/CPU212が、記憶部208/記憶部214に記憶される制御プログラムをRAM205/RAM213上に読み出して実行することで実現される。なお図3は、各装置が備える全てのソフトウェアを示したものではない。
【００１６】
まず、情報処理装置101が備えるソフトウェアについて説明する。情報処理装置101は、通信部300とログ情報ストレージ310とを備える。通信部300は、ネットワークＩ／Ｆ211を制御してHTTP通信を行うソフトウェアである。ログ情報ストレージ310は、記憶部214に記憶される、ログ管理アプリ（ログ管理アプリケーション）361から送信され通信部300により受信したログ情報ファイルを格納するものである。
【００１７】
次に、画像処理装置100が備えるソフトウェアについて説明する。画像処理装置100は、オペレーティングシステム（OS）320、システム制御部330、Java(登録商標)仮想マシン（JavaVM）340、アプリケーションプラットフォーム（アプリPF）350を有する。OS320は、プロセスの管理、メモリ管理、入出力管理を実行する。システム制御部330は、コピーなど画像処理装置100の基本的な機能を実現するプログラムであり、コントロール部331、機器設定情報管理部332、認証情報管理部333などを有する。コントロール部331は、コピーやプリンタなど画像処理装置100の各機能や、UI表示部203に表示する操作画面などのシステムを制御する。機器設定情報管理部332は、画像処理装置100における機器の表示画面設定やスキャン等の各機能設定など、機器のシステム設定情報を管理する。認証情報管理部333は、画像処理装置100においてユーザ認証に関わる処理を行う。認証情報管理部333は、ユーザがユーザ入力部202などを介して入力したユーザ情報及び認証情報を認証DB(不図示)から検索し、登録されたユーザ情報及び認証情報であれば当該ユーザを画像処理装置100に対しログイン状態とする。また、認証情報管理部333は、ログイン状態のユーザがユーザ入力部202などを介してログアウト操作を行った場合、当該ユーザを画像処理装置100に対しログアウト状態とする。この認証機能により、画像処理装置100は、ユーザの認証管理を行い、ログイン状態のユーザの権限に応じた提供機能の制限を行う。
【００１８】
Java(登録商標)VM340は、Java(登録商標)プログラムを実行する仮想マシンであり、アプリPF350の実行基盤である。アプリPF350は、アプリに対して画像処理装置100を制御する機能を提供する、アプリの実行基盤である。アプリPF350は、プラットフォームを構成するクラスライブラリ群351、アプリのライフサイクルや参照関係管理を行うOSGi(登録商標)352などを有する。クラスライブラリ群351は、アプリに対し、画像処理装置100を制御するコントロール部331、機器設定情報管理部332を制御可能とするための機能を有する。加えて、クラスライブラリ群351は、アプリに対し、Java(登録商標)VM340提供の機能、及びOSGi(登録商標)352管理上の他のアプリ提供の機能を制御可能とするための機能を有する。
【００１９】
ログ管理アプリ361、アプリA362、アプリB363、アプリC364は、アプリPF350上で動作するアプリである。ログ管理アプリ361は、アプリPF350を介して、システム制御部330におけるコピー等のコントロール制御処理の実行イベントや画像処理装置100の設定情報を取得し、ログ情報として記録するアプリである。また、ログ管理アプリ361は他のアプリに対し、他のアプリがログ情報をログ管理アプリ361に書き込むための機能、及び他のアプリが自身の有するファイルをログ管理アプリ361に収集させるための機能を有する。すなわちログ管理アプリ361は、画像処理装置100内で発行されたログ情報と、アプリケーションプラットフォーム上で実行されている他のアプリケーションがプラットフォームを介して記録を指示したログ情報と、他のアプリケーションが管理しているログ情報とを一元的に記録することができる。なお以下の説明では、アプリがプラットフォームを介してログ管理アプリ３６１にログの記録を指示した場合、プラットフォームを介していることを省略して説明する場合がある。さらに、ログ管理アプリ361は、前述の機能により記録、収集したログ情報のファイルを一括して外部出力する機能を有する。ログ管理アプリ361の詳細構成については、後述する図4の構成図で説明する。アプリA362、アプリB363、アプリC364は、アプリPF350を介してシステム制御部330による画像処理装置100を制御する機能を有するアプリである。また、アプリA362、アプリB363、アプリC364は、ログ管理アプリ361提供の機能を使用して、ログ管理アプリ361に自身のログ情報を記録する処理を有する。アプリA362、アプリB363、アプリC364は、それぞれのアプリに固有の機能果たすためのプログラムである。そのうちの或るものはアプリPF350を介してログ管理アプリ361にログ情報を渡して記録させ、また或るものはそのアプリ自身がログ情報を記録し、管理している。
【００２０】
本実施形態におけるログ管理アプリ361の構成について図4で、また、ログ管理アプリ361が記録するログ情報の形式について図5を用いて説明する。図4は、本実施形態におけるログ管理アプリ361の構成図である。ログ管理アプリ361は、ログ収集部400、イベント受信部401、設定情報取得部402、アプリ情報取得部403、アプリファイル受信部404、ログ出力制御部405、通信部406を有する。
【００２１】
ログ収集部400は、イベント受信部401、アプリ情報取得部403からのログ書き込み指示を受け、当該指示の情報をログ情報のファイルとしてログ管理アプリ361の記憶領域に記憶する機能を有する。また、ログ収集部400は、設定情報取得部402、アプリファイル受信部404に対し、それぞれ設定情報、アプリファイルの取得を指示し、取得した情報をログ情報ファイルとしてログ管理アプリ361の記憶領域に記憶する機能を有する。加えて、ログ収集部400は、ログ出力制御部405からのログ情報外部出力指示を受け、ログ管理アプリ361の記憶領域に記憶したログ情報のファイルを圧縮し、一括して出力する機能を有する。
【００２２】
イベント受信部401は、アプリPF350のクラスライブラリ群351を介してOSGi(商標登録)352、Java(登録商標)VM340、コントロール部331、認証管理部333からの処理の実行イベントを受信する。そしてイベント受信部401は、受信した実行イベントの情報をログ情報として記録する指示をログ収集部400へ行う機能を有する。ここで、処理の実行イベントとは、各システムにおいて以下の４項目を含む。すなわち、
−OSGi(商標登録)352における、OSGi(商標登録)352管理上のアプリのライフサイクル状態(インストール/開始/停止/アンインストール)の変化。
−コントロール部331、及びアプリPF350上のアプリにおける、UI表示部203に表示する操作画面の変化。
−コントロール部331におけるコピーやプリンタ、スキャン、FAXなど画像処理装置の各機能のジョブ実行、及び実行されたジョブの履歴記録。
−認証管理部333における、ユーザのログイン/ログアウト状態の変化。
【００２３】
イベント受信部401は、上記イベントの発生のほか、画像処理装置101の起動、およびファイル出力処理の少なくともいずれかのタイミングにおいて、画像処理装置内（すなわち情報処理装置内）で発行されたイベントログのログ情報を、アプリ350を介して取得し、ログ収集部400によってログファイルに記録する。
【００２４】
設定情報取得部402は、ログ収集部400からの指示を受け、アプリPF350のクラスライブラリ群351を介してOSGi(商標登録)352、機器設定情報管理部332が記憶する機器の設定情報を取得する。そして設定情報取得部402は、取得情報をログ情報としてログ収集部400へ記録の指示を行う機能を有する。ここで、機器の設定情報とは、各システムにおいて以下の２項目を指している。すなわち、
−OSGi(商標登録)352における、OSGi(商標登録)352管理上のアプリの設定情報(アプリ名、バージョン情報など)。
−機器設定情報管理部332における、表示画面設定やスキャン等の各機能設定など、画像処理装置100のシステム設定情報。
【００２５】
アプリ情報取得部403は、アプリ350のOSGi(商標登録)352を介して、アプリPF350上のアプリにアプリのログ情報を書き込み可能とする機能を提供する。アプリ情報取得部403は、アプリから当該機能による書き込み指示を受けた情報を、ログ収集部400に対し記録指示を行う機能を有する。なお、本実施形態では、アプリA362、アプリC364が、当該機能を通じて情報を書き込むものとする。
【００２６】
アプリファイル受信部404は、アプリPF350のOSGi(商標登録)352を介して、アプリPF350上のアプリに、アプリ自身が所有するログ情報等のファイルをログ収集部400へ記録することを指示する機能を提供する。アプリファイル受信部404は、アプリから当該機能によるファイル収集の指示を受けた時、ログ出力制御部405からのログ情報外部出力指示に合わせてアプリが指定したファイルを収集する機能を有する。なお、本実施形態では、アプリB363、アプリC364が、当該機能を通じて自身の記憶領域上に記録するファイルを、ログ収集部400へ記録することを指示するものとする。
【００２７】
ログ出力制御部405は、ログ情報を外部へ出力するための出力指示をログ収集部400へ行い、ログ収集部400がログ管理アプリ361の記憶領域上のログ情報ファイルをひとまとめにして圧縮したファイルを、通信部406を介して外部へ出力する出力機能を有する。なお、本実施形態では、ログ出力制御部405は圧縮ファイルを情報処理装置101のログ情報ストレージ310に出力するものとし、通信部406を介して通信部300とHTTP通信を行うものとする。しかしながら、当該出力機能を実現するための構成は、ログ出力制御部405が圧縮ファイルを通信部406により外部出力可能な構成であれば、特に制限はない。例えば、ログ出力制御部405が画像処理装置100に接続されたUSB(不図示)に対し圧縮ファイルをコピーする、などでもよい。
【００２８】
＜ログ情報の構成例＞
図5は、ログ管理アプリ361がログ収集部400へ記録を指示するログ情報の形式についての説明図である。なお、ログ管理アプリ361がアプリファイル受信部404によりログ収集部400に記録する、アプリ自身が所有するファイルに関しては、拡張子やフォーマットの形式を問わないため、ここではログ情報の形式の記載を割愛する。
【００２９】
図5(A)は、イベント受信部401がログ収集部400に記録する、イベントログ500の記載情報の例を示す図である。イベントログ500は、イベント発生時刻501、機器識別番号502、イベント固有情報503で構成され、一例としてプリントジョブ実行ログを示している。イベントログ500ではイベント発生の度にイベント発生時刻501、機器識別番号502、イベント固有情報503が一行分追加される。図5(A)の場合、プリントジョブ実行が発生するたびイベント発生時刻501、機器識別番号502、イベント固有情報503が一行分追加されることとなる。イベント発生時刻501は、イベント受信部401からイベントログ500に対してログ情報を記録した時刻であり、本実施形態ではUnix時刻で記録を行う。機器識別番号502は、ログ管理アプリ361が稼働する画像処理装置100固有の機器の識別番号であり、本実施形態では、8桁の英数文字で構成するものとする。イベント固有情報503は、イベント受信部401が通知したイベント毎の固有の情報を表し、図5(A)の例では、プリントジョブ実行ログとして、プリントジョブ実行者名、プリントジョブ名などを記録する。また、イベントログ500は、イベント受信部401によりイベント毎にComma Separated Values (CSV)形式ファイルで、"機器識別番号_ファイル生成時刻_イベント名.csv"として記録される。
【００３０】
図5(B)は、ログ収集部400からの指示を受けた設定情報取得部402が、ログ収集部400に記録する設定情報ログ510の記載情報の例を示す図である。設定情報ログ510は、ログ記録時刻511、機器識別番号512、機器固有情報513で構成され、一例としFAXやファイルサーバーなどの送信先を登録するアドレス帳の情報ログを示している。設定情報ログ510では設定情報取得部402からのログ情報記録処理の度にログ記録時刻511、機器識別番号512、機器固有情報513が一行分追加される。なお、アドレス帳情報のように一つの設定情報に対し複数情報が設定されている場合は、設定情報取得部402からの1回のログ情報記録処理に対し、複数行のログ記録時刻511、機器識別番号512、機器固有情報513が追記される。図5(B)の場合、設定情報取得部402からの1回のログ情報記録処理に対し、当該時刻でアドレス帳に登録済みの情報が二行分、ログ記録時刻511、機器識別番号512、機器固有情報513として追加される。ログ記録時刻511は、ログ収集部400からの指示を受け、設定情報取得部402が設定情報ログ510に対してログ情報を記録した時刻であり、本実施形態ではUnix時刻で記録を行う。機器識別番号512は、機器識別番号502と同等の物である。機器固有情報513は、設定情報取得部402が収集した設定情報毎の固有情報を表し、図5(B)の例では、アドレス帳の情報としてFAX番号などを記録する。また、設定情報ログ510は、設定情報取得部402により設定情報毎にCSV形式ファイルで、"機器識別番号_ファイル生成時刻_設定情報名.csv"として記録される。
【００３１】
図5(C)は、アプリ情報取得部403がログ収集部400に記録する、アプリ情報ログ520の記載情報の例を示す図である。アプリ情報ログ520は、ログ記録時刻521、機器識別番号522、各アプリ固有出力情報523で構成され、一例としてアプリA362の情報ログを示している。アプリ情報ログ520ではアプリA362によるログ情報を記録する指示の実行の度にログ記録時刻521、機器識別番号522、各アプリ固有出力情報523が一行分追加される。図5(C)の場合、アプリA362によるログ情報を記録する指示が発生するたび、ログ記録時刻521、機器識別番号522、各アプリ固有出力情報523が一行分追加される。ログ記録時刻521は、アプリ、たとえばアプリA362がアプリ情報ログ520に対してログ情報の記録を指示した時刻であり、本実施形態ではUnix時刻で記録を行う。機器識別番号512は、機器識別番号502、及び機器識別番号512と同等のものである。各アプリ固有出力情報523は、アプリA362がアプリ情報ログ520に対して記録を指示した情報の内容であり、ログの重要度のレベル(LogLevel)、アプリ任意の数値識別子(GroupId)、アプリ任意の文字列(Message)を指定する。また、アプリ情報ログ520は、アプリ情報取得部403によりアプリ毎にCSV形式ファイルで、"機器識別番号_ファイル生成時刻_アプリ名.csv"として記録される。
【００３２】
＜ログ記録初期化処理＞
次に、本実施形態おけるログ管理アプリ361のログ記録処理、及びログ出力処理について、図6から図8を用いて説明する。図6は、アプリPF350が各アプリを起動する際の、ログ管理アプリ361の処理のフローチャート図である。実行の主体は本例ではCPU204である。ログ管理アプリ361は、画像処理装置100の動作中はそのログを記録するため、たとえば画像処理装置100の起動時に、その初期化処理の一環として起動される。あるいは管理者権限を伴う起動指示に応じて起動されてもよい。
【００３３】
図６において、ステップS601では、アプリPF350によって起動されたログ管理アプリ361が、クラスライブラリ群351に対し、各イベントの受信登録処理を行う。この登録により、ログ管理アプリ361は、コントロール部331での処理実行時に、クラスライブラリ群351からのイベントの発生通知をイベント受信部401で検知し、イベントログのログ情報として記録可能となる。
ステップS602では、ログ管理アプリ361が、設定情報取得部402によりログ管理部400への記録対象の設定情報ログ510のファイルが存在しているかを判定する。この判定では、記録対象の設定情報ログ510のファイルそれぞれに対して行われる。
S602の判定により、ファイルが存在しない記録対象である設定情報ログ510のファイルがあると判定された場合、ステップS603として、ログ管理アプリ361が、設定情報取得部402によりログ管理部400に対して当該設定情報ログ510のファイルの生成を行う。
ステップS604では、ログ管理アプリ361が、設定情報取得部402により各機器の設定情報を、クラスライブラリ群351を介して取得し、ログ管理部400の各設定情報ログ510に追記する。
【００３４】
ステップS605では、ログ管理アプリ361が、アプリに対して公開されたアプリ情報取得部403のアプリケーションプログラムインターフェース（API、単にインターフェースとも呼ぶことがある。）を通じた登録処理通知をアプリから受け、当該アプリをアプリ情報取得対象として登録する。この処理は、アプリからの登録通知を受けて実施される処理であり、本実施形態ではアプリA362がステップS611で、アプリC364がステップS631としてアプリPF350上のOSGi(商標登録)352により起動される際に実行する登録通知に応じて実行されるものとする。当該ステップS611、S631の処理はログ管理アプリ361の起動後であれば任意のタイミングで実行可能である。
【００３５】
ステップS606では、ログ管理アプリ361が、アプリによるアプリファイル受信部404の機能を通じた登録処理通知を受け、当該アプリ指定の所有ファイルを収集対象として登録する。この処理は、アプリからの登録通知を受けて実施される処理であり、本実施形態ではアプリB363がステップS621で、アプリC364がステップS632としてアプリPF350上のOSGi(商標登録)352により起動される際に実行する登録処理に応じて実行されるものとする。当該ステップS621、S632の処理はログ管理アプリ361の起動後であれば任意のタイミングで実行可能である。
【００３６】
ステップS607では、ログ管理アプリ361が、ログ記録処理を開始する。当該処理は、ログ管理アプリ361がアプリPF350上のOSGi(商標登録)352により停止されるまで繰り返し実行するものであり、後述する図7で詳細を説明する。
【００３７】
＜ログ情報記録処理＞
図7は、ログ管理アプリ361のログ記録処理のフローチャート図である。ステップS607のログ記録処理開始指示を受け、ステップS701として、ログ管理アプリ361が、イベント受信部401より各イベントの発生通知があったかを判定する。この判定は、受信対象のイベント毎に行われる。S701での判定により受信対象となるイベントが通知された場合、ステップS702として、ログ管理アプリ361が、イベント受信部401によりログ管理部400への記録対象のイベントログ500のファイルが存在しているかを判定する。
S702の判定により、ファイルが存在しない記録対象であるイベントログ500があると判定された場合、ステップS703として、ログ管理アプリ361が、イベント受信部401により、ログ管理部400に対して当該イベントログ500のファイルの生成を行う。
ステップS704では、ログ管理アプリ361が、イベント受信部401により通知された各イベントのログ情報をログ管理部400の該当するイベントログ500に追記する。
【００３８】
ステップS705では、ログ管理アプリ361が、特定のタイミングに合致するかどうかを判定する。この処理は、後述のステップS706からステップS708において、ログ管理アプリ361が、設定情報取得部402により機器の各設定情報を取得し、ログ管理部400の各設定情報ログ510に追記するタイミングを測るために行われる。また、この特定のタイミングとは、一定周期ごと、ログ出力制御部405からのログ外部出力指示通知時、及びログ管理アプリ361のアプリ終了処理時などが該当する。
特定のタイミングであるとS705で判定されると、ステップS706に分岐する。ステップS706からステップS708の処理は、前述のステップS602からステップS604と同等の処理である。ただし、対象のログはイベントログに代わって、設定情報ログとなる。
【００３９】
ステップS709では、ログ管理アプリ361が、アプリによるアプリ情報取得部403の機能を通じたログ書き込み処理の指示を受けたかどうかを判定する。この処理は、ステップS605で登録済みのアプリからのログ書き込み処理指示を受けて実行する処理である。なお、本実施形態ではアプリA362がステップS721、アプリC364がステップS731として、それぞれのアプリによる処理に応じたログ書き込み処理の指示を、アプリ情報取得部403の機能を通じて行う。ステップS709の判定は、それらの指示の有無を判定する。アプリからログ書き込み指示によりログファイルに記録される情報をアプリ情報或いはアプリケーション情報とも呼ぶ。
【００４０】
S709の判定により登録済みのアプリからのログ書き込み処理指示を受けたと判定した場合、ステップS710として、ログ管理アプリ361が、アプリ情報取得部403により、ログ管理部400に、ログ書き込み処理指示を行った登録済みアプリのアプリ情報ログ520のファイルが存在するか判定する。
S710の判定により、ステップS709でログ書き込み指示を受けた登録済みアプリに対応したアプリ情報ログ520のファイルが存在しないと判定された場合、ステップS711として、ログ管理アプリ361が、アプリ情報取得部403によりログ管理部400に対して当該アプリ情報ログ520のファイルの生成を行う。
ステップS712では、ログ管理アプリ361が、アプリ情報取得部403により通知された各アプリのログ情報をログ管理部400の該当するアプリ情報ログ520に追記する。
【００４１】
ステップS713では、ログ管理アプリ361が、ログ出力制御部405によりログ外部出力指示が通知されたかどうかを判定する。この指示は、例えば情報処理装置101などから受信してもよいし、ユーザ入力部202からの入力に基づいてもよい。ログ外部出力の処理は、後述のステップS714、及び図8で説明する、ログ管理アプリ361によりログ出力制御部405を介して、ログ収集部400が保存したログファイルを外部へ一括出力するために行われる。なお、このログ外部出力指示の通知は、一定周期ごと、ログ収集部400のログファイル全体のストレージ使用量が一定値を超えた場合、及びログ管理アプリ361が有する操作画面を介したユーザ操作による出力指示などのタイミングで実行される。ここで、ログ管理アプリ361が有する操作画面とは、ユーザ操作による出力指示が行えれば構成に制限はなく、UI表示部203に表示する操作画面でもよい。また、ログ管理アプリ361が操作画面を構成するHTMLデータ(不図示)を有しており、外部情報装置101所有のWebブラウザ(不図示)からのHTTP Requestを受け、データを、通信部406を介して送信する。そして、外部情報装置101所有のWebブラウザ(不図示)上に構成される操作画面でもよい。
【００４２】
S713の判定によりログ外部出力指示が通知されていると判定された場合、ステップS714として、ログ管理アプリ361が、ログ外部出力処理を開始する。この処理の詳細は、後述の図8で説明する。
【００４３】
＜アプリからのログ収集処理および外部出力処理＞
図8は、ログ管理アプリ361のログ出力処理のシーケンス図である。本処理は、図7におけるステップS714より開始される。
【００４４】
ステップS801では、ログ管理アプリ361が、ログ収集部400によりアプリ指定のファイル収集指示をアプリファイル受信部に行う。ここで収集指示を行う対象となるアプリは、ステップS606でログ管理アプリ361がアプリファイル受信部404の機能を通じた登録指示を受けたアプリであり、本実施形態ではアプリB363、アプリC364となる。また、ここで収集指示を行う対象となるファイルは、ステップS606でログ管理アプリ361が、アプリファイル受信部404の機能を介した登録処理指示を行ったアプリ指定のファイルとする。
ステップS802では、ログ管理アプリ361が、アプリファイル受信部404によりアプリ指定のファイルがアプリB363上に存在するかを判定する。
S802の判定によりアプリB363上にアプリ指定のファイルが存在した場合、ステップS803として、ログ管理アプリ361が、アプリファイル受信部404によりアプリ指定のファイルをコピーする処理を行う。このコピーされたファイルは、ログ管理アプリ361の記憶領域に保存される。
ステップS804では、ログ管理アプリ361が、ログ収集部400によりコピーしたファイル名を変更する処理を行う。この名前変更処理は、コピーしたファイル名の接頭文字に、"機器識別番号_前回ログ取得時刻_今回ログ取得時刻_"を追記するものである。機器識別番号は画像処理装置100の機器識別番号である。これにより固有のファイル名であることを保証できる。さらにファイル名からログが収集された機器および期間を特定できる。
【００４５】
ステップS805からステップS808までの処理は、ステップS801からステップS804までの処理と同等である。ただし対象となるアプリがアプリC364となる。ここでは説明のため、ステップS801からステップS804をアプリB363、ステップS805からステップS808をアプリC364のファイル収集処理を行うものとして別々に記載している。
【００４６】
ステップS809では、ログ管理アプリ361が、ログ収集部400によりログ管理アプリ361の記憶領域に保存するログ情報ファイルをフォルダにまとめ、圧縮処理を行う。この時のフォルダ名は、フォルダ名を固有の名称とするため、また装置と時刻とを特定するために"機器識別番号_今回ログ送信時刻"とする。そしてログ管理アプリ361は、圧縮ファイルをログ収集部400によりログ出力制御部405へ渡す。このとき圧縮および送信の対象となるログ情報には、ステップS802やS806で収集したログファイルのみならず、図7の手順で記録したイベントログや設定情報ログも含まれる。
ステップS810では、ログ管理アプリ361が、ログ出力制御部405により圧縮ファイルの外部送信処理を行う。本実施形態では、ログ管理アプリ361が、ログ収集部400により通信部406を介してHTTP Requestを送信し、情報処理装置101へ圧縮ファイルをアップロードする。しかしながら、ログ情報を蓄積可能な外部デバイスであれば構成に制限はない。
【００４７】
ステップS811では、情報処理装置101が、通信部300を介して受信したHTTP Requestより圧縮ファイルを取得し、ログ情報ストレージ310に保存する。本実施形態ではその後、外部情報装置101が、通信部300を介してHTTP Responseをログ管理アプリ361のログ出力制御部405へ通知するものとする。
ステップS812では、ログ管理アプリ361が、ログ出力制御部405によりログ管理アプリ361の記憶領域内の全ログファイルの削除を行う。
【００４８】
ステップS813では、ログ管理アプリ361が、ログ出力制御部405により圧縮ファイルの外部出力が成功したかの判定を行う。ここでの判定処理には、例えばUSBによる外部デバイスへの出力であれば外部デバイスへのコピーに成功したかどうかにより判定する。本実施形態ではステップS812によるHTTP Responseにより判定する。
S813の判定により圧縮ファイルの外部出力が成功したと判定された場合、ステップS814として、ログ管理アプリ361が、ログ出力制御部405によりログ管理アプリ361の記憶領域内の圧縮ファイルの削除を行う。ステップS813からステップS814の処理は、ステップS810で外部出力に失敗した場合に、次回ステップS810による出力時に送信を失敗した圧縮ファイルも合わせて出力するために行われる。
ステップS815では、ログ管理アプリ361が、ログ出力制御部405によりログ収集部400へログ記録処理の再開を指示する。これにより、図7のステップS714の処理が終了し、図7記載のログ記録処理のフローチャートが再開する。
【００４９】
以上により、実施形態１では、機器ログ情報(イベントログ500、設定情報ログ510)とアプリログ情報(アプリ情報ログ520、アプリファイル)をそのままの形で一括して取得可能となる。かつアプリログ情報に関しては、各アプリが必要に応じたログ情報のみを収集することができるようになり、解析者によるアプリにおける動作検証等のログ解析処理が容易になる。
【００５０】
なお圧縮および送信の対象となるログを指定できる構成とすることもできる。この場合には、対象として指定された種類のログ、たとえばステップS802やS806で収集したアプリログ、図7の手順で記録したイベントログ、設定情報ログのうちから、指定された種類のログを圧縮して送信し、その後削除する。またログ情報の送信先は、別途指定かのうであったもよい。
【００５１】
［実施形態２］
次に、本発明の第2の実施形態を説明する。実施形態１の構成では、ログ管理アプリ361のアプリ情報取得部403の機能、及びアプリファイル受信部404の機能を使用するアプリが存在する分だけ、アプリログ情報502及びアプリファイルが収集される。このとき、大量のデータをアプリログ情報502、またはアプリファイルに書き込んでしまうアプリが存在すると、ログ管理アプリ361によりその情報全てが出力されるため、データサイズが膨大なものとなる。このことは、解析者がログを回収する際に出力先のディスク容量を不要に圧迫してしまうこととなり、ログが回収できなくなるなどログ収集の管理運用を困難なものにしてしまう。
【００５２】
前述のような大サイズのログ情報に起因する問題は、ログ管理アプリ361のアプリ情報取得部403の機能、及びアプリファイル受信部404の機能の使用に制限を設けていないため発生している。すなわち、アプリ情報取得部403の機能およびアプリファイル受信部404の機能の使用に所定の権限を持たせ、不適切な使用をする可能性のあるアプリ(前述の例の場合、大量のデータを吐き出す可能性のあるアプリ)には使用許可を与えないことで回避可能である。
【００５３】
そこで実施形態２では、ログ管理アプリ361がアプリからの機能の登録処理指示を受けた際に、当該アプリの権限を確認し、アプリ情報取得部403の機能またはアプリファイル受信部404の機能またはその両方を使用する権限を有するアプリのみをアプリ情報取得対象またはアプリファイル収集対象またはその両方とする処理の変更を行う。以下、図9から図11を用いて実施形態１からの差分のみ説明する。
【００５４】
＜権限を付与されたアプリのリストファイルの例＞
図9は、ログ管理アプリ361が有する、ログ管理アプリ361の機能の使用を許可するアプリをリストしたリストファイルの構成図である。図9のリストファイルは、アプリ情報取得許可リスト900、及びアプリファイル受信許可リスト910の２つのファイルで構成される。
【００５５】
図9(A)は、アプリ情報取得許可リスト900の構成図の一例である。アプリ情報取得許可リスト900には、アプリ情報取得部403で提供する機能の使用を許可するアプリを示すアプリ情報が記載されており、アプリ名901、バージョン情報902、アプリID903が含まれる。当該アプリ情報は、後述する図10でのアプリのマニフェストファイル記載の項目に該当し、当該情報と一致するアプリのみが、アプリ情報取得部403が提供する機能を使用することが可能となる。本実施形態では、以下の情報がマニフェストファイルに記載されているアプリのみ、アプリ情報取得部403で提供する機能を使用可能となる。すなわち、ログ管理アプリ361がアプリ情報を取得対象として許可するアプリは、アプリ名"AppliA"、バージョン情報"1.0"、アプリID"11111111-2222-3333-4444-555555555555" を有するアプリである。加えて、アプリ名"AppliC"、バージョン情報"2.0"、アプリID"aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee"を有するアプリである。
【００５６】
図9(B)は、アプリファイル受信許可リスト910の構成図の一例である。アプリファイル受信許可リスト910には、アプリファイル受信部404が提供する機能の使用を許可するアプリ情報が記載されており、アプリ名911、バージョン情報912、アプリID913が含まれている。当該アプリ情報は、後述する図10でのアプリのマニフェストファイル記載の項目に該当し、当該情報と一致するアプリのみが、アプリファイル受信部404で提供する機能を使用することが可能となる。本実施形態では、以下の情報がマニフェストファイルに記載されているアプリのみ、アプリファイル受信部404で提供するAPIを使用可能となる。すなわち、ログ管理アプリ361がアプリ情報を取得対象として許可するアプリは、アプリ名"AppliB"、バージョン情報"3.0"、アプリID"66666666-7777-8888-9999-000000000000"を有するアプリである。
【００５７】
＜マニフェストファイルの例＞
図10は、アプリPF350が有する、ログ管理アプリ361の機能を使用するアプリの構成、及びマニフェストファイルの構成図の一例である。ここで、マニフェストファイルとは、アプリPF350を構成するOSGi(登録商標)352により、アプリのライフサイクル及び参照関係などを管理するためのメタデータを記載したもので、アプリごとに関連付けられたファイルである。アプリPF350上のアプリは、自身の機能を構成するクラスファイルに加えマニフェストファイルを有ししたJarファイルであるものとする。
【００５８】
図10(A)は、アプリA362のアプリの構成及びマニフェストファイルの構成図の一例である。アプリA362は、JARファイルの形式を取り、自身の機能を構成するクラスファイル群1000及びマニフェストファイル1001を有している。マニフェストファイル1001は、アプリPF350上で機能するためのメタデータとして、アプリA362のアプリ名1002、バージョン情報1003、アプリID1004などを有する。アプリ名1002は、アプリの名前を表し、アプリ情報取得許可リスト900のアプリ名901、アプリファイル受信許可リスト910のアプリ名911に記載する情報に対応する。バージョン情報1003は、アプリのバージョン情報を表し、アプリ情報取得許可リスト900のバージョン情報902、アプリファイル受信許可リスト910のバージョン情報912に記載する情報に対応する。アプリID1004は、アプリの識別子を表し、アプリ情報取得許可リスト900のアプリID 903、アプリファイル受信許可リスト910のアプリID 913に記載する情報に対応する。
【００５９】
図10(B)は、アプリB363のアプリの構成及びマニフェストファイルの構成図の一例である。アプリB363は、JARファイルの形式を取り、自身の機能を構成するクラスファイル群1010及びマニフェストファイル1011を有している。マニフェストファイル1011は、マニフェストファイル1001に相当する情報を有するものであり、ここでは、アプリB363の固有データを有する。
【００６０】
図10(C)は、アプリC364のアプリの構成及びマニフェストファイルの構成図の一例である。アプリC364は、JARファイルの形式を取り、自身の機能を構成するクラスファイル群1020及びマニフェストファイル1021を有している。マニフェストファイル1021は、マニフェストファイル1001、マニフェストファイル1011に相当する情報を有するものであり、ここでは、アプリC364の固有データを有する。
【００６１】
＜アプリ起動時の手順＞
図11は、アプリPF350が各アプリを起動する際の、ログ管理アプリ361の処理のフローチャート図である。図１１中ステップS601からステップS604およびS607は、図6におけるステップS601からステップS604およびS607と等しい処理である。
【００６２】
ステップS1101では、ログ管理アプリ361が、アプリによるアプリ情報取得部403の機能を通じた登録処理指示を受け、当該アプリのマニフェストファイルからアプリ名、バージョン情報、アプリIDを取得する。この処理は、アプリからの登録指示を受けて実行する処理であり、本実施形態ではアプリA362がステップS611、アプリC364がステップS631としてアプリPF350上のOSGi(商標登録)352により起動される際に実行するものとする。
ステップS1102では、ログ管理アプリ361が、ステップS1101で取得したアプリの各情報と、アプリ情報取得許可リスト900に記載のアプリ名901、バージョン情報902、アプリID903が一致するか判定する。本実施形態では、アプリA362のアプリ名1002、バージョン情報1003、アプリID1004、アプリC364のアプリ名1022、バージョン情報1023、アプリID1024がそれぞれ判定に用いられる。
S1102の判定によりアプリ情報取得許可リスト900に記載のアプリと判定した場合、ステップS1103として、ログ管理アプリ361が、当該アプリをアプリ情報取得対象として登録する。本実施形態では判定の結果、アプリA362、アプリC364を登録し、アプリ情報取得部403の機能を通じた書き込み指示実行を許可する。
【００６３】
ステップS1104では、ログ管理アプリ361が、アプリによるアプリファイル受信部404の機能を通じた登録処理指示を受け、当該アプリのマニフェストファイルからアプリ名、バージョン情報、アプリIDを取得する。この処理は、アプリからの登録指示を受けて実行する処理であり、本実施形態ではアプリB363がステップS621、アプリC364がステップS632としてアプリPF350上のOSGi(商標登録)352により起動される際に実行するものとする。
ステップS1105では、ログ管理アプリ361が、ステップS1104で取得したアプリの各情報と、アプリファイル受信許可リスト910に記載のアプリ名911、バージョン情報912、アプリID913が一致するか判定する。本実施形態では、アプリB363のアプリ名1012、バージョン情報1013、アプリID1014、アプリC364のアプリ名1022、バージョン情報1023、アプリID1024がそれぞれ判定に用いられる。
S1105の判定によりアプリファイル受信許可リスト910に記載のアプリと判定した場合、ステップS1106として、ログ管理アプリ361が、当該アプリ指定の所有ファイルを収集対象として登録する。本実施形態では判定の結果、アプリB363を登録し、アプリファイル受信部404を介したアプリB363指定のファイルの回収処理(図8のシーケンス図におけるステップS801からステップS804)を行う。一方で、判定の結果、アプリC364は登録を行わず、アプリファイル受信部404を介したアプリC364指定のファイルの回収処理(図8のシーケンス図におけるステップS805からステップS808)は行わない。
【００６４】
以上により、実施形態２では、ログ管理アプリ361が、権限を有するアプリのみをアプリ情報取得対象、及びアプリファイル収集対象とすることで、ログ管理アプリ361の機能を不適切に使用するアプリによる動作影響を回避できる。このことは、解析者がログを回収する際に、ログ収集に関する手間を軽減させ、管理運用の容易性向上につながる。
【００６５】
なお、本実施形態では、ログ管理アプリ361が権限を有するアプリを判定するために使用許可リストファイルを有し、そこに記載された情報をアプリのマニフェストファイル情報と比較することを行っている。しかしながら、アプリが、ログ管理アプリ361に対し、権限を有するアプリであることを一意に特定可能な項目を有していれば、構成はこれに限定されるものではない。例えば、マニフェストファイルに権限判定用の任意の項目を追加し、アプリがその項目を有している場合のみ、ログ管理アプリ361が権限を有するアプリと判定するような構成でもよい。
【００６６】
また上記例では、アプリからのアプリ情報を取得して記録するログファイルと、アプリから収集するアプリファイルとを対象として権限を付与する構成としたが、そのいずれか一方を対象としても良い。
【００６７】
［実施形態３］
次に、本発明の第3の実施形態を説明する。実施形態１の構成では、ログ管理アプリ361のアプリファイル受信部404の機能を使用するアプリが、収集対象のファイルにログ情報を追記していくと、ログ管理アプリ361はその情報をそのまま出力するため出力データサイズが大きくなってしまう。加えて、追記部分以前の情報は前回出力時の情報と同じ情報であり、ログ情報として重複が発生する。このことは、解析者がログを回収する際に出力先のディスク容量を圧迫するだけでなく、前回と今回で出力したデータを比較する際に重複データを削除する必要があり、解析のための作業に手間が発生してしまう。
【００６８】
そこで実施形態３では、ログ管理アプリ361がアプリから収集したアプリファイルがテキストファイルであった場合、重複部分を削除して送信する処理の変更を行う。以下、図12から図14を用いて実施形態１からの差分のみ説明する。
【００６９】
なお、本実施形態では、ログ管理アプリ361は、アプリファイル受信部404に、アプリ所有のファイルの重複を削除したファイルをログ収集部400へ記録することを指示する機能(以下、「重複削除機能」)を追加で有するものとする。そして、アプリたとえばアプリC364は、重複部分を通じて、アプリC364自身の管理する記憶領域上に記録したログファイルをログ収集部400へ記録する指示を行うものとする。
【００７０】
図12は、アプリPF350が各アプリを起動する際の、ログ管理アプリ361の処理のフローチャート図である。ステップS601からステップS606までの処理及びS607は、図6におけるステップS601からステップS606までの処理及びS607と等しい処理である。
【００７１】
ステップS1201では、ログ管理アプリ361が、アプリによるアプリファイル受信部404の重複削除機能を通じた登録処理指示を受け、当該アプリ指定の所有ファイルを収集対象として登録する。この処理は、アプリからの登録通知を受けて実施される処理であり、本実施形態ではアプリC364がステップS1211としてアプリPF350上のOSGi(商標登録)352により起動される際に実行するものとする。
【００７２】
＜アプリからのログ収集処理および外部出力処理＞
図13は、ログ管理アプリ361のログ出力処理のシーケンス図である。本処理は、図7におけるステップS714より開始される。
ステップS1301は、図8におけるシーケンスの処理ステップS714、ステップS801からステップS804を実行する。すなわち、ステップS1300により、画像処理装置100は図8のシーケンスの処理ステップS804の実行後と同等の状態を有する。ステップS805からステップS807までの処理は、図8におけるステップS805からステップS807までと等しい処理である。
【００７３】
ステップS1302では、ログ管理アプリ361が、ログ収集部400によりアプリ指定のファイルがテキストファイルかどうか、かつ、ログ収集部400によりアプリ指定のファイルを回収する処理が初回でないかを判定する。ここで、テキストファイルとは、拡張子.txtを有するファイルをはじめ、CSV、ログファイル(.log)など、テキストに変換可能なデータ列のみで表現されるデータを指す。
S1302の判定よりテキストファイルであり、かつ、初回処理でないと判定された場合、ステップS1303として、ログ管理アプリ361が、ログ収集部400によりアプリ指定のファイルの全探索処理を開始する。この探索は、アプリ指定のファイルの末尾行から一行ずつ降順に行われ、アプリ指定のファイルの先頭行に達する、または後述するステップS1306の処理判定が真となるまで実行される。
【００７４】
ステップS1304では、ログ管理アプリ361が、ログ収集部400によりステップS1303で検索中の行が前回収集したログファイルの最終行と一致するか判定する。ここで、前回収集したログファイルとは、ログ管理アプリ361が現在実行しているログ出力処理より一回前に実施されたログ出力処理の実行時に収集されたログファイルを指す。また、ログファイルの最終行とは、一回前に実施されたログ出力処理時における、ログ収集部400により収集したアプリ指定のファイルの判定可能な最終行のことを表し、後述するステップS1307、ステップS1311で記録された情報である。このファイルの最終行は、たとえばアプリ指定のファイルに関連づけて、ログ収集部400により記憶され、管理される。なお行とは、たとえば改行コードで区切られた文字列などである。
S1304の判定より検索中の行が一致した場合、ステップS1305として、ログ管理アプリ361が、ログ収集部400により収集したアプリ指定のファイルから、検索でヒットした行の前後で分割したファイルの作成を行う。ヒットした行は既に収集されたログ情報であるから、その行は分割後の前半部ファイルに含める。すなわち、ログ管理アプリ361は、ログ収集部400により検索した行のログ情報及びそれ以前のログ情報を含む前半部ファイルと、検索中した行のログ情報を含まず、それ以降のログ情報を含む後半部ファイルとを作成する。
【００７５】
ステップS1306では、ログ管理アプリ361が、ログ収集部400により前半部ファイルのサイズと前回収集したアプリ指定のログファイルの全体のサイズと一致するか判定する。前回収集したアプリ指定のログファイルの全体のサイズは、後述するステップS1308、ステップS1312で記録される情報である。このアプリ指定のログファイルのサイズ情報も、たとえばアプリ指定のファイルに関連づけて、ログ収集部400により記憶され、管理される。
S1306の判定より前半部ファイルのサイズと前回収集したアプリ指定のログファイルの全体のサイズとが一致した場合、ステップS1307として、ログ管理アプリ361が、ログ収集部400により、前回収集したログファイルの最終行情報を今回収集したログファイルの最終行情報に更新する。また、ステップS1308として、ログ管理アプリ361が、ログ収集部400により、前回収集したログファイルの全体サイズを今回収集したログファイルの全体サイズに更新する。
さらに、ステップS1309として、ログ管理アプリ361が、ログ収集部400により、今回集中したアプリ指定のファイルを後半部ファイルの情報で上書きする処理を行う。すなわち、ログ収集部400により収集したアプリ指定のログファイルは、前回収集したログファイルの最終行より後に記録されたログ情報のみを有するものとなる。この処理の後、ログ管理アプリ361は、ログ収集部400に対しステップS1303の処理を中断し、当該処理ループ以降の処理すなわちS1310を行う指示を出す。
【００７６】
ステップS1310では、ログ管理アプリ361が、ログ収集部400によりアプリ指定のファイルの全体を探索処理したか（すなわちファイルの先頭まで探索したか）、または、ログ収集部400によりアプリ指定のファイルを収集する処理が初回であるかのいずれかに該当するか否かを判定する。ここで、ログ収集部400によりアプリ指定のファイルの全体を探索処理したと判定された場合は、ステップS1303の探索処理においてステップS1306の判定に合致しなかった場合を指す。
S1310の判定よりファイルの全体を探索処理した、またはログ収集部400によりアプリ指定のファイルの初回の収集処理であった場合、ログ管理アプリ361が、ログ収集部400によりステップS1311、ステップS1312を実行する。当該処理ステップは、ステップS1307、及びステップS1308と等しい処理である。
ステップS808の処理は、図8におけるステップS808と等しい処理である。
【００７７】
ステップS1313は、図8におけるシーケンスの処理ステップS809からステップS815を実行する。すなわち、収集したログファイルがステップS1312で後半部ファイルにより更新されている場合には更新後のログファイルが、そうでない場合には収集したログファイルそのものが圧縮され、外部装置へと送信される。ステップS1313により、画像処理装置100は図8のシーケンスの処理ステップS815の実行後と同等の状態を有する。
【００７８】
図14は、ログ管理アプリ361が、アプリファイル受信部404を介してログ収集部400により記録する、アプリC364が所有するファイルの記載情報の例を示す図である。また、図14(A)から図14(C)は、図13のシーケンスにより、ログ管理アプリ361がアプリファイル受信部404によりログ収集部400に記録、及び生成する、アプリC364が所有するファイルの記載情報の遷移を表す。以下、図13のシーケンスと対応付けて記載情報の構成の遷移を説明する。
【００７９】
図14(A)は、図13のステップS1310を実行した際に、ログ管理アプリ361がアプリファイル受信部404を介して、アプリC364から収集してログ収集部400に記録するログファイルの例である。ここに示した例は、ログ管理アプリ361がアプリファイル受信部404によりアプリC364からログファイルを収集してログ収集部400に記録する初回のシーケンスである。したがってステップS1303からステップS1309は行わない。すなわち、ログ管理アプリ361は、ログ収集部400に記録するログファイルとして、ステップS807でアプリファイル受信部404によりアプリC364から取得したファイルを、分割することなく記録する。また、ステップS1311において、前回収集したログファイルの最終行の情報として、ステップS807でアプリファイル受信部404により取得したファイルのファイル情報の最終行1401を記録する。更に、ステップS1312において、前回収集したログファイルの全体サイズとして、ステップS807でアプリファイル受信部404により取得したファイル1400のサイズを記録する。
【００８０】
図14(B)は、図13のステップS1303を実行した際に、ログ管理アプリ361がアプリファイル受信部404を介してアプリC364から収集してログ収集部400に記録するログファイルの例である。本実施形態では、ログ管理アプリ361がアプリファイル受信部404を介してアプリC364から収集したログファイルをログ収集部400に記録する2回目のシーケンスの例とする。すなわち、ログ管理アプリ361がログ収集部400により、前回収集したログファイルの最終行で、ステップS807でアプリファイル受信部404により収集したファイルを、その最終行1403から一行ずつ降順に検索する。このとき、ステップS1304において、前回収集したログファイルの最終行と、今回収集したログファイルの一行（図14(B)の行1401）とが一致すると、ステップS1305として、ログ管理アプリ361がログ収集部400により当該ログファイルを分割して前半部ファイルと後半部ファイルとを作成する。前半部ファイルには、図14(B)のログ情報1400が、後半部ファイルには図14(B)のログ情報1402が含まれる。また、ステップS1306の判定により、前半部ファイルと前回収集したログファイルの全体サイズが一致するので、ログ管理アプリ361はログ収集部400によりステップS1307、ステップS1308を実行する。すなわち、ログ管理アプリ361はログ収集部400により前回収集して記録したログファイルの最終行の情報を、ステップS807でアプリファイル受信部404により取得したログファイルの最終行1403で更新する。更に、前回収集したログファイルの全体サイズを、ステップS807でアプリファイル受信部404により収集したログファイルのファイル全体(1400と1402の合計)のサイズで更新する。
【００８１】
図14(C)は、図13のシーケンスにおけるステップS1309を実行した際に、ログ管理アプリ361がログ収集部400により記録するログファイルの例である。ログ管理アプリ361はログ収集部400により、アプリファイル受信部404を介して記録したアプリC364のログファイルを、ステップS1305で作成した後半部ファイルで上書きする。従って図14(C)のように、ログ管理アプリ361は、ログ収集部400を介して図14(B)のファイルを、そのファイル全体から前回の記録したログファイルとの重複した部分を削除したファイルで上書きし、当該ファイルを以降の処理でアプリC364が所有するファイルとして外部に送信する。
【００８２】
以上により、実施形態３では、ログ管理アプリ361がアプリから収集したアプリファイルがテキストファイルであった場合、外部へと送信済みのファイルの内容、特にその末尾とファイルサイズとに基づいて重複部分を特定する。そして重複部分を削除して送信することで、出力先のディスク容量の圧迫を回避し、かつ解析者のログ解析の手間を削減が可能となる。
【００８３】
なお、本発明は、具体的に開示された実施例に限定されるものではなく、特許請求の範囲から逸脱することなく、種々の変形や変更が可能である。
【００８４】
［その他の実施例］
本発明は、上述の実施形態の１以上の機能を実現するプログラムを、ネットワーク又は記憶媒体を介してシステム又は装置に供給し、そのシステム又は装置のコンピュータにおける１つ以上のプロセッサーがプログラムを読出し実行する処理でも実現可能である。また、１以上の機能を実現する回路（例えば、ＡＳＩＣ）によっても実現可能である。
【符号の説明】
【００８５】
１００：画像処理装置、１０１：情報処理装置、３５０：アプリケーションプラットフォーム（アプリＰＦ）、３６１：ログ管理アプリ、３６２〜３６４：アプリケーション（アプリ）、４００：ログ収集部、４０１：イベント受信部、４０２；設定情報取得部、４０３：アプリ情報取得部、４０４：アプリファイル受信部
【図１】
2017091108.tif 000003
【図２】
2017091108.tif 000004
【図３】
2017091108.tif 000005
【図４】
2017091108.tif 000006
【図５】
2017091108.tif 000007
【図６】
2017091108.tif 000008
【図７】
2017091108.tif 000009
【図８】
2017091108.tif 000010
【図９】
2017091108.tif 000011
【図１０】
2017091108.tif 000012
【図１１】
2017091108.tif 000013
【図１２】
2017091108.tif 000014
【図１３】
2017091108.tif 000015
【図１４】
2017091108.tif 000016