前提・実現したいこと
現在JavaのLoggerクラスを利用してLogをファイルに書き出す処理を作成しています。
スレッドでログを書き出していますが、Logger自体がスレッドセーフらしいのでそれが原因と思えません。
以下のパスでファイルを作っています。
/log/日付/logファイル名.log
発生している問題・エラーメッセージ
logファイルを書き込めているような挙動はあるのですが、
logファイル名.log.1
やlogファイル名.log.2
のようなファイルも作られてしまいます。
該当のソースコード
Java
1public class Logger{ 2 3 private Logger logger = Logger.getLogger("log"); 4 5 public void write(Level level, String msg) throws SecurityException, IOException { 6 7 Handler handler = new FileHandler(filePath, true); 8 handler.setFormatter(new SimpleFormatter()); 9 logger.addHandler(handler); 10 11 12 // INFOメッセージを出力 13 logger.log(level, msg); 14 15 handler.close(); 16 } 17}
試したこと
Handlerをコンストラクタで生成。
今日の日付をメンバに持たせる。
書き込み時に現在日時とメンバを比較し、現在時刻がメンバ変数より後だった場合はHandlerを作り直す。
上記の方法でも求めた動きにならなかったです。
回答2件
あなたの回答
tips
プレビュー