株式会社イーブ|未経験・転職の方も就職可能。Javaプログラマー育成のエキスパート

HOMEJAVA技術者育成システム開発求人情報個人情報保護

第 62 回 ~ ロギングその2 ~

トップページ > Java技術者育成 > Javaワンポイント > 第 62 回 ~ ロギングその2 ~

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


前回のサンプルでは、ログはコンソールに出力されました。
今回は、ログをファイルに出力する方法を学んでいきましょう。


ログを出力するにあたり、LoggerはログメッセージをHandlerオブジェクトに転送します。
出力先を変更するには、Handlerオブジェクトを使いわければよいのです。
コンソールに出力する場合、ConsoleHandlerを使います。
そして、ファイルに出力する場合は、FileHandlerを使うのです。


以下のサンプルコードでは、匿名Loggerオブジェクトを作ってログ出力をしています。
プログラムを実行すると同じフォルダにログファイルが作成されます。(J2SE1.4以上対応)



import java.util.logging.FileHandler;
import java.util.logging.Level;
import java.util.logging.Logger;


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


        FileHandler fileHandler = null;


        try {
            // 匿名Logger取得
            Logger logger = Logger.getAnonymousLogger();


            // Loggerのログレベル指定
            logger.setLevel(Level.FINER);


            // FileHandler作成
            fileHandler = new FileHandler("HandlerTest.log");


            // Handlerのログレベル指定
            fileHandler.setLevel(Level.CONFIG);


            // LoggerにHandler追加
            logger.addHandler(fileHandler);


            // ログ出力
            logger.severe("SEVERE は重大な障害を示すメッセージレベルです。 ");
            logger.warning("WARNING は潜在的な問題を示すメッセージレベルです。 ");
            logger.info("INFO はメッセージを情報として提供するメッセージレベルです。 ");
            logger.config("CONFIG は静的な構成メッセージのメッセージレベルです。");
            logger.fine("FINE はトレース情報を提供するメッセージレベルです。 ");
            logger.finer("FINER はかなり詳細なトレースメッセージを示します。 ");
            logger.finest("FINEST は非常に詳細なトレースメッセージを示します。 ");


        } finally {
            // ファイルを閉じる
            if (fileHandler != null) {
                fileHandler.close();
            }
        }
    }
}



作成されたログファイルの中身を確認するとXML形式になっています。
これはFileHandlerのデフォルトのフォーマッターがXMLFormatterであるためです。
JREのlibフォルダの中のlogging.propertiesファイルでその設定がされています。


# default file output is in user's home directory.
java.util.logging.FileHandler.pattern = %h/java%u.log
java.util.logging.FileHandler.limit = 50000
java.util.logging.FileHandler.count = 1
java.util.logging.FileHandler.formatter = java.util.logging.XMLFormatter


デフォルトのファイル出力先も確認できます。
出力先を指定しない場合、ユーザーのホームディレクトリに出力されます。


また、LoggerのログレベルはFINERに設定されているのに、INFOまでしか出力されていません。
これはHandlerオブジェクトにもログレベルの設定があるためです。
ソース中のHandlerのログレベルの設定処理をコメントアウトすると、FINERまで出力されます。
Loggerにログレベルを設定したにも関わらず出力されない場合、Handlerを確認しましょう。


次回はファイルへの出力をもう少し細かくやっていきます。


[Javaワンポイント]内の前後の記事
第 63 回 ~ ロギングその3 ~
→ 第 62 回 ~ ロギングその2 ~
第 61 回 ~ ロギングその1 ~


■更新日時での前後の記事
7月30日 お天気
→ 第 62 回 ~ ロギングその2 ~
7月29日 お天気