JAva.util.loggingログ機能使用


Java Logging APIはsun社が2002年5月に正式に発表した.J 2 SE 1.4から提供されている新しいアプリケーションインタフェースです.データベース、Eメールなど、ファイル、コンソール、または他のユーザー定義の場所にログ情報を簡単に制御および出力できます.したがって、エンドユーザー、システム管理者、ソフトウェアサービスエンジニア、開発者にセキュリティ・ホールをキャプチャし、構成の正確性を確認し、システムのボトルネックを追跡調査し、システムの実行エラーを調査するツールです.Java Logging APIの設計目標は:1.実行時にログ機能を起動または閉じることができる;2.ログを非常に精密に制御することができ、すなわちログの特定の機能を起動または閉じることができる.3.実行時にログサービスを登録することができ、もちろん新しいサードパーティのログサービスを登録することもできる.4.Java Logging APIが既存のログシステム(オペレーティングシステムのログ機能など)に接続できるように接続サービスを提供することができる.5.エンドユーザへの優先度の高い情報の表示をサポートすることができる.
 
/**
 * 
 */
package com.skyon.gd.test;

import java.util.logging.Logger;

/**
 * @author sandy
 *
 */
public class LogTest {

	/**
	 * @param args
	 */
	private static String name = LogTest.class.getName();
	private static Logger logger = Logger.getLogger(name);
	public static void main(String[] args) {
		test();
	}
	private static void test() {
		logger.info("this is a logger test");
	}
}

 説明:1.LoggerはJava Logging APIのクラスです.その前に、あなたが使用しているJ 2 SEが1.4以上であることを確認しなければなりません.2.Logger.getLoggerメソッドは、Loggerインスタンスを作成します.各Loggerインスタンスには名前が必要です.通常、クラス名を使用してLoggerインスタンスを定義します.後でこのような原因についても話します.3.log.infoメソッドは、ログ情報を出力するために使用されます.実行例1コンソールに日付時刻、クラス名、メソッド名、Hello Logging Worldが出力されている情報が表示されます.
出力の種類Java Logging APIは、出力を制御するための7つのレベルを提供する.この7つのレベルはそれぞれSEVERE(最上位レベル)WARNING INFO CONFIG FINER FINEST(最上位レベル)に対応しており、Loggerクラスでも7つのレベルの出力方法を用意しています.以下に、これらの方法を用いてログ情報を出力する例を示す.
 
package com.skyon.gd.test;
import java.util.logging.Logger;
/**
 * 
 * @author sandy
 *
 */
public class LogLevelTest {

	private static String name=LogLevelTest.class.getName();
	private static Logger logger=Logger.getLogger(name);
	public static void main(String[] args) {
		test();
	}
	private static void test() {
		//level<=1
		logger.severe("severe  level");
		//level<=2
		logger.warning("warning level");
		//level<=3
		logger.info("info level");
		//level<=4
		logger.config("config level");
		//level<=5
		logger.fine("fine level");
		//level<=6
		logger.finer("finer level");
		//level<=7
		logger.finest("finest level");
	}
}

 
実行例2コンソールには(1)-(3)の情報しか出力されていないことがわかりますが、(4)-(7)の情報は想像通りに出力されていません.これは大丈夫です.次の内容を見続けると原因がわかります.
制御出力上の例2でinfo以下のレベル情報が出力されなかったのは、デフォルトログ出力レベルの設定がinfoであるため、すなわちinfo以上のレベルのみが出力され、以下のレベルは出力されないためである.設定を変更することで出力レベルを変更できます.出力レベルを変更する方法は、外部プロファイルを使用する方法と、プログラム符号化を使用する方法の2つです.通常は最初の方法を使用します.デフォルトの外部プロファイルは、JREのlib/logging.propertiesファイルです.このファイルを開いて、.level=ALL java.util.logging.ConsoleHandler.level=ALL修正が終わったら、もう一度例2を実行します.今回(1)-(7)の内容はすべて出力されます.出力レベルを以下の値に変更して、出力に何か変化があるか試してみてください.OFF SEVERE WARNING INFO CONFIG FINE FINER FINEST ALL
カスタムプロファイルシステムが提供するデフォルトのプロファイルlib/logging.propertiesを使用したくない場合は、自分で定義したプロファイルを使用することもできます.カスタムプロファイルを使用する方法はいくつかありますが、システム属性値java.util.logging.config.fileを定義することでカスタムプロファイルを設定するのが便利です.たとえば、例2を実行するときは、java-Djava.util.logging.config.file=mylogging.properties LevelTestのmylogging.propertiesがカスタムプロファイルであるコマンドを使用します.必要に応じて、ファイルのパス名を追加することもできます.
より多くの出力制御は、前述した7つの出力レベルに加えて、Loggerクラスでは、プログラマのデバッグ時に使用される出力情報を容易にする3つの方法が提供されています.entering exiting throwingは、FINERと同じレベルの出力であり、プログラムエントリ、出力、例外の出力に使用されます.