1. 設定フィルを準備
設定ファイルの中身はこんな感じ
handlers=java.util.logging.ConsoleHandler, java.util.logging.FileHandler.level=FINEST java.util.logging.ConsoleHandler.level=FINEST java.util.logging.ConsoleHandler.formatter=java.util.logging.SimpleFormatter #出力の設定 #ログとして出力するログのレベル. このレベル以上のログだけ出力される. java.util.logging.FileHandler.level=WARNING #出力ファイル名. カレントディレクトリから見て場所を指定する.%uと%gは世代番号 #もちろん名前は自由 #この時, ディレクトリがないとエラーになるので, あらかじめ作っておくか, #なかった場合ディレクトリを作成する処理を行うといい. java.util.logging.FileHandler.pattern=Log/OutPut%u.%g.log #フォーマッターの設定, 自作のフォーマッターの宣言も可能 java.util.logging.FileHandler.formatter=java.util.logging.SimpleFormatter #追記設定, trueなら追記, falseなら上書き java.util.logging.FileHandler.append=true #最大世代番号, この数だけログファイルを作る java.util.logging.FileHandler.count=10 #一つのファイルに書き込める最大バイト数の設定 java.util.logging.FileHandler.limit=2000
3つ目のブロックで細かい設定を行う. 上の2ブロックは・・・HandlerとFormatter?
これをパスの通ったところ(src以下など)に置いておく
あとはLoggerを使う際にこの設定を呼んでやればいい
2. 設定を呼び出すクラスの作成
2. 設定を呼び出すクラスの作成
自分は参考にしたサイトのとおり, クラスを作ってみた
/**
* ログ設定プロパティファイルのファイル名.
*/
protected static final String LOGGING_PROPERTIES = "logger.properties";
//Loggerのプロパティファイルの名前
//パスが通ったところに起きましょう
/**
* static initializer によるログ設定の初期化.
*/
static {
File directory = new File("Log");
if (!directory.exists()) {
Logger.getLogger(Logger.GLOBAL_LOGGER_NAME)
.warning("ログディレクトリがありません");
if (directory.mkdir()) {
Logger.getLogger(Logger.GLOBAL_LOGGER_NAME).info("Log folder was made");
} else {
Logger.getLogger(Logger.GLOBAL_LOGGER_NAME).warning("Log folder couldn't make");
}
}
final Logger logger = Logger.getLogger("オリジナルの名前");
// クラスパスの中から ログ設定プロパティファイルを取得
InputStream inStream = "".class
.getClassLoader().getResourceAsStream(
LOGGING_PROPERTIES);
if (inStream != null) {
try {
LogManager.getLogManager().readConfiguration(inStream);
} catch (IOException e) {
logger.warning("ログ設定のエラー");
} finally {
if (inStream != null) {
try {
inStream.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
} else {
logger.info("設定ファイルがありません");
}
}
//プロパティファイルのローダ
//staticイニシャライザで設定することで, 最初の一度だけ設定を行なう
public static Logger getLogger(){
return Logger.getLogger("オリジナルの名前");
}
これらを設定した後,
Logger.getLogger("オリジナルの名前").info/warning/severeで呼ぶと設定は反映されている
オリジナルの名前には基本このクラス名を入れるとか
使う際はこのクラスのgetLoggerを呼ぶようにすると, 最初に呼ばれた際にのみstaticイニシャライザで設定ファイルを読み込む.
0 件のコメント:
コメントを投稿