この文書では、xfyプラットフォームのログ出力管理の仕組みとその利用方法を説明します。ログ出力管理の情報は、xfyプラットフォームを利用するときや、xfyプラットフォームでxfyプラグインやxfyコンポーネントを開発するときに役立ちます。
xfyプラットフォームのログ出力管理の仕組みと利用方法を解説します。
この文書では、xfyプラットフォームのログ出力管理の仕組みとその利用方法を説明します。ログ出力管理の情報は、xfyプラットフォームを利用するときや、xfyプラットフォームでxfyプラグインやxfyコンポーネントを開発するときに役立ちます。
xfyプラットフォームにおけるログ出力管理にはJavaのロギング機能を利用しています。Javaのロギング機能はjava.util.loggingパッケージにまとめられています。Javaのロギング機能について、詳しくはJavaのドキュメントを参照してください。
xfyプラットフォームのログ出力管理では、次の処理を行います。
INFOレベル以上のログをログファイルへ出力します。System.outやSystem.errへ直接出力されるメッセージはログとして扱い、コンソールへ出力しないINFOレベル、System.errはSERVERレベルとして、ログファイルへ出力します。WARNINGレベル以上のログが出力されたときには、警告メッセージを表示します。ログは次の出力先に出力できます。
以下、それぞれの出力先の詳細を説明します。
ログファイルはxfyプラットフォームをインストールしたフォルダにあるlogフォルダ内に出力されます。最大で5つのログファイルが出力されます。ファイル名はxfylog{通し番号}.xmlです。{通し番号}は、0から4の数字に置き換えられます。
ログファイルへは、INFOレベル以上のログが出力されます。出力されるログのレベルは固定です。
ログファイルへ出力される内容の例を、次に示します。
<?xml version="1.0" encoding="UTF-8" standalone="no"?> <!DOCTYPE log SYSTEM "logger.dtd"> <log> <record> <date>2006-08-24T15:45:42</date> <millis>1156401942007</millis> <sequence>98</sequence> <logger>com.xfy</logger> <level>INFO</level> <class>com.xfy.css.CssStyleImpl</class> <method>add</method> <thread>10</thread> <message>CSSPropertyService: CSS property [prop] is not supported!</message> </record> </log>
Javaのデフォルトの設定では、INFOレベル以上のログはコンソールに出力されます。xfyプラットフォームではこの設定を無効にしているので、そのままではログはコンソールに出力されません。ログをコンソールへ出力するには、起動パラメータでデバッグオプションを指定してxfyプラットフォームを起動します。指定するデバッグオプションは-Dcom.xfy.place.XfyPlace.debug=trueです。同時に、別プロセスで起動するのを抑制するために、-Dcom.xfy.startup.XfyStartup.without-jvm-restart=trueを指定します。このことより、ログをコンソールへ出力するときは、コンソールに次のように入力してxfyプラットフォームを起動します。
java -Dcom.xfy.place.XfyPlace.debug=true -Dcom.xfy.startup.XfyStartup.without-jvm-restart=true -jar xfyClient.jar
コンソールへの出力はJavaのデフォルトの機能なので、起動パラメータや設定ファイルを差し替えてカスタマイズできます。詳しくはJavaのドキュメントを参照してください。
xfyコンポーネントやxfyプラグインを作成するときに、ログ出力管理を利用してログを出力する方法を紹介します。ログを出力するときは、必ずここで紹介する方法を使用してください。
ログ出力管理を利用してログを出力する手順は、次のとおりです。
com.xfy.place.XfyPlaceクラスのgetLogger()でLoggerを取得する。Loggerのlog(Level,String)やlog(Level,String,Throwable)、info(String)などを使ってログを出力する。例えば、"Hello xfy log."というInfoレベルのログを出力するコードは次のとおりです。
XfyPlace.getLogger().info("Hello xfy log.");
なお、例外をキャッチしたことを知らせるログを出力する場合は、log(Level,String,Throwable)を利用することを推奨します。IOExceptionをキャッチした場合の例を、次に示します。
try{
//IOExceptionが発生するような処理
}catch(IOException ex){
XfyPlace.getLogger().log(Level.INFO,"load error",ex);
}
ログはログレベルによって扱い方が異なります。xfyプラットフォームでは、それぞれのログレベルはデフォルトで次のように扱われます。
Level.FINE以下Level.INFO
Level.WARNING
Level.SEVERE
出力するログのログレベルは、ログの扱い方とログの内容から適切なレベルを選択します。WARNINGレベルとSEVEREレベルではログの扱い方に違いはないので、どちらにするかはログの内容で判断します。利用者に警告メッセージを表示する必要がある場面のログのうち、より深刻で以降の動作に影響があり、xfyプラットフォームを再起動する必要があるものはSEVEREレベルにします。
なお、現在はWARNINGレベルとSEVEREレベルとで、表示される警告のメッセージボックスの表示スタイルに違いはありません。
以下、ログレベルの選択例を具体的な例で示します。これはあくまで例であり、強制ではありません。同じようなログの内容でも、状況に応じて別のログレベルを選んでもかまいません。
Level.Fineにします。Level.INFOにします。Level.WARNINGにします。OutOfMemoryError
Errorオブジェクトをキャッチする必要はありません。キャッチする必要がある場合は、深刻な問題で以降の動作にも影響があるので、Level.SEVEREにします。