top / index / prev / next / target / source

2007-11-07 diary: Java: プロパティ、ログ

いがぴょん画像(小) 日記形式でつづる いがぴょんコラム ウェブページです。

old-v2

Java: プロパティ、ログ

Javaのプロパティ、ログについて調べ中です。

Java: プロパティ、ログ

Java: プロパティ、ログについて調べ中。

プロパティ、リソースバンドル

プロパティ

リソースバンドル

ログ

ふつうは Jakarta Log4Jを使うなぁ…

2007.11.08追記 ざっくりと java.util.logging を調べ中。

import java.io.IOException;
import java.io.InputStream;
import java.util.logging.Level;
import java.util.logging.LogManager;
import java.util.logging.Logger;

public class LogSample3 {
    /**
     * ログ設定プロパティファイルのファイル名。
     */
    protected static final String LOGGING_PROPERTIES = "javalog.properties";
    static {
        // クラスパスの中から ログ設定プロパティファイルを取得。
        // java起動時に外から与える方法もある!

        // static initializer によるログ設定の初期化。
        final Logger log = Logger.getLogger("LogSample3");
        log.fine("ログ設定: " + LOGGING_PROPERTIES + " をもとにログを設定します。");
        final InputStream inStream = LogSample3.class.getClassLoader()
                .getResourceAsStream(LOGGING_PROPERTIES);
        if (inStream == null) {
            log.info("ログ設定: " + LOGGING_PROPERTIES + " はクラスパス上に見つかりませんでした。");
        } else {
            try {
                LogManager.getLogManager().readConfiguration(inStream);
                log.info("ログ設定: " + LOGGING_PROPERTIES
                        + " をもとに LogManagerを設定しました。"); // or configレベルか(?)
            } catch (IOException e) {
                log.warning("ログ設定: " + LOGGING_PROPERTIES
                        + " による LogManager設定の際に例外が発生しました。:" + e.toString());
            }
            try {
                inStream.close();
            } catch (IOException e) {
                log.severe("ログ設定: ログ設定プロパティファイルのストリームクローズ時に例外が発生しました。:"
                        + e.toString());
            }
        }
    }

    private void process() {
        final Logger log = Logger.getLogger("LogSample3");
        log.entering(LogSample3.class.toString(), "main");

        log.finest("ふつー:" + Level.FINEST.intValue());
        log.finer("ふつー:" + Level.FINER.intValue());
        log.fine("ふつー:" + Level.FINE.intValue());
        log.config("config:" + Level.CONFIG.intValue());
        log.info("ちょっとした情報。:" + Level.INFO.intValue());
        log.warning("ちょっとやばい:" + Level.WARNING.intValue());
        log.severe("まずい:ERRORレベル(?):" + Level.SEVERE.intValue());

        log.exiting(LogSample3.class.toString(), "main", "" + Level.FINER.intValue());
    }

    public static void main(String[] args) {
        new LogSample3().process();
    }
}

プロパティファイルをソースコードから与える方法。

import java.io.ByteArrayInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.util.logging.Level;
import java.util.logging.LogManager;
import java.util.logging.Logger;

public class LogSample4 {
    /**
     * ログ設定プロパティファイルのファイル内容。
     */
    protected static final String LOGGING_PROPERTIES_DATA = "handlers= java.util.logging.ConsoleHandler\n"
            + ".level=FINEST\n"
            + "java.util.logging.ConsoleHandler.level=FINEST\n"
            + "java.util.logging.ConsoleHandler.formatter=java.util.logging.SimpleFormatter";
    static {
        // ログ設定プロパティファイルを取得。

        // static initializer によるログ設定の初期化。
        final Logger log = Logger.getLogger("LogSample");
        log.fine("ログ設定: ログを設定します。");
        InputStream inStream = null;
        inStream = new ByteArrayInputStream(LOGGING_PROPERTIES_DATA.getBytes());

        try {
            LogManager.getLogManager().readConfiguration(inStream);
            log.config("ログ設定: LogManagerを設定しました。");
        } catch (IOException e) {
            log.warning("ログ設定: LogManager設定の際に例外が発生しました。:" + e.toString());
        }
        try {
            inStream.close();
        } catch (IOException e) {
            log.severe("ログ設定: ログ設定プロパティファイルのストリームクローズ時に例外が発生しました。:"
                    + e.toString());
        }
    }

    private void process() {
        final Logger log = Logger.getLogger("LogSample");
        log.entering(LogSample4.class.toString(), "main");

        log.finest("ふつー:" + Level.FINEST.intValue());
        log.finer("ふつー:" + Level.FINER.intValue());
        log.fine("ふつー:" + Level.FINE.intValue());
        log.config("config:" + Level.CONFIG.intValue());
        log.info("ちょっとした情報。:" + Level.INFO.intValue());
        log.warning("ちょっとやばい:" + Level.WARNING.intValue());
        log.severe("まずい:ERRORレベル(?):" + Level.SEVERE.intValue());

        log.exiting(LogSample4.class.toString(), "main", ""
                + Level.FINER.intValue());
    }

    public static void main(String[] args) {
        new LogSample4().process();
    }
}

この日記について