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 件のコメント:
コメントを投稿