!!!参考 http://knowledge.reontosanta.com/archives/648 http://blog.livedoor.jp/applepedlar/archives/53526919.html !!!java.util.logging.Logger !!ログを出力する // Loggerクラスのインスタンスを生成する final Logger logger = Logger.getLogger("SampleLogging"); // ログを出力する logger.log(Level.FINEST, "ログ出力テスト:finest"); logger.log(Level.FINER, "ログ出力テスト:finer"); logger.log(Level.FINE, "ログ出力テスト:fine"); logger.log(Level.CONFIG, "ログ出力テスト:config"); logger.log(Level.INFO, "ログ出力テスト:info"); logger.log(Level.WARNING, "ログ出力テスト:warning"); logger.log(Level.SEVERE, "ログ出力テスト:severe"); !!ファイルに出力する // Loggerクラスのインスタンスを生成する final Logger logger = Logger.getLogger("SampleLogging"); try { // 出力ファイルを指定する FileHandler fh = new FileHandler("SampleLog.log"); // 出力フォーマットを指定する fh.setFormatter(new java.util.logging.SimpleFormatter()); logger.addHandler(fh); } catch (IOException e) { e.printStackTrace(); } // 出力レベルをCONFIG以上に設定する logger.setLevel(Level.ALL); // ログを出力する logger.log(Level.FINEST, "ログ出力テスト:finest"); logger.log(Level.FINER, "ログ出力テスト:finer"); logger.log(Level.FINE, "ログ出力テスト:fine"); logger.log(Level.CONFIG, "ログ出力テスト:config"); logger.log(Level.INFO, "ログ出力テスト:info"); logger.log(Level.WARNING, "ログ出力テスト:warning"); logger.log(Level.SEVERE, "ログ出力テスト:severe"); !!標準出力に出さないようにする ファイルに出力しても、標準出力される。 標準出力に出力しないようにするには、親LoggerのHandlerからConsoleHandlerを除去する必要がある public class Test { public static void main(String[] args) throws Exception { Logger logger = Logger.getLogger("Test"); FileHandler fileHandler = new FileHandler("testlog.txt"); fileHandler.setFormatter(new SimpleFormatter()); logger.addHandler(fileHandler); logger.log(Level.INFO, "Test1 コンソール表示あり"); removeConsoleHandler(logger); logger.log(Level.INFO, "Test2 コンソール表示なし"); } private static void removeConsoleHandler(Logger logger) { Handler[] handlerArr = logger.getHandlers(); for (Handler handler : handlerArr) { if (handler instanceof ConsoleHandler) { logger.removeHandler(handler); } } // 再帰 Logger parentLogger = logger.getParent(); if (parentLogger != null) { removeConsoleHandler(parentLogger); } } } !!その他 propertiesファイルの内容は、Loggerの最上位の親に適用される。 java.util.logging.config.fileで指定したHandlerやLevelは Logger.getLogger("global").getParent().getHandlers(); Logger.getLogger("global").getParent().getLevel(); などで取得できる。 APIドキュメントより 各 Logger は、Logger の名前空間にある既存の上位クラスにもっとも近い「親」Logger を追跡します。 各 Logger は各々に関連した Level を持ちます。これは、このロガーが対象とする最小 Level を反映します。Logger のレベルが null に設定される場合、Logger の有効なレベルはその親から継承され、そしてまた親はその親から再帰的に有効なレベルを取得します。これは、ツリーの上位方向に以下同様に行われます。 (略) デフォルトでは、ロガーは親の Handler にも通知します。これは階層の上位方向に再帰的に行われます。 {{category2 プログラミング言語,Java}}