株式会社イーヴ

EeBlog(テクニカルブログ)

TOP > EeBlog > 第71回 ロギングその10

第71回 ロギングその10

引き続き「ロギング」をテーマにしていきます。

今回はプログラムごとにロギングの設定ファイルを切り替える方法を学びます。

ロギングのデフォルトの設定ファイルはJREのlibフォルダのlogging.propertiesです。
logging.propertiesを書き換えることで設定を変更できるのです。
ただ、その場合、そのJREを使用している全てのプログラムに影響が及びます。
プログラムごとに設定ファイルを切り替えるにはどうしたらよいのでしょうか。

実はlogging.propertiesファイルの設定はLogManagerが読み込みます。
LogManagerにプログラム固有の設定ファイルを読み込ませればよいのです。

今回はサンプルを実行する前に準備作業が必要となります。
まず、サンプルを実行する場所にlogging.propertiesをコピーします。
そして、下記のようにConsoleHandlerのフォーマットをXMLFormatterに変更します。
他の箇所は変更しなくてよいでしょう。

# Limit the message that are printed on the console to INFO and above.
 java.util.logging.ConsoleHandler.level = INFO
 java.util.logging.ConsoleHandler.formatter = java.util.logging.XMLFormatter

以上の作業を行った上で以下のサンプルを実行してみてください。(J2SE1.4以上対応)

import java.util.logging.LogManager;
 import java.util.logging.Logger;


 public class LogManagerTest {


     public static void main(String[] args) throws Exception {


         // LogManager取得
        LogManager logManager = LogManager.getLogManager();


         // プログラム固有の設定ファイル読み込み
        logManager.readConfiguration(LogManagerTest.class
                                    .getResourceAsStream("logging.properties"));


         // Logger取得
        Logger logger = Logger.getLogger(LogManagerTest.class.getName());
         logger.info("プログラム固有のlogging.propertiesです。");


         // デフォルトの設定ファイル読み込み
        logManager.readConfiguration();
         logger.info("jreのlogging.propertiesです。");
     }
 }

設定ファイルが切り替えられているのが確認できますね。
サンプルで行っているようにデフォルトの設定に戻すこともできます。