top / index / prev / next / target / source
日記形式でつづる いがぴょんコラム ウェブページです。
Javaのプロパティ、ログについて調べ中です。
Java: プロパティ、ログについて調べ中。
プロパティ
リソースバンドル
ふつうは Jakarta Log4Jを使うなぁ…
2007.11.08追記 ざっくりと java.util.logging を調べ中。
TODO ログレベルによるログ出力コードのON/OFF LogSample3.java
``` 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();
}
}