私は昨日からいくつかのことで戦っています。JAVA LOGGINのファイルapp.log.Xの増分を避けて制御する方法
javaでWebアプリケーション(WAR)をログに記録します。
ログを作成し、FileHandlerを追加してログメッセージを送信します。しかし、私たち全員が知っているように、ファイルハンドラは、fush()とclose()を呼び出すまで、新しいファイルをロックしていますので、戦争を再デプロイするときです。 app)では、デプロイメントごとに1つのファイルが作成されます(醜い)。
私はこのような行為を避けようとしていました。(これはパフォーマンスの点でこのように行われているかどうかはわかりませんが、毎回ファイルを開くとクローズするのは時間がかかります。ロガーがメッセージを記録するたびにハンドラとフラッシュ/閉じる。 (だから私は1つだけのファイルを持っている)。
しかし、私はこれを行う方法はありません。私はjava.util.Loggerクラスを拡張しようとしており、とても難しいです。
このような状況にどう対応できるかについての手掛かりがありますか?
ありがとうございます!
public class LogUtil {
public static String name = "app%g.log";
public static Logger obtenerLogger(String eid, String path, Level levelToLog) {
Logger logger = Logger.getLogger(eid);
if (levelToLog != null) {
logger.setLevel(levelToLog);
}
//I create the folder if not exist
File dirFile = new File(path);
if (!dirFile.exists()) {
dirFile.mkdirs();
}
//I remove the handlers and close after each logg call (doing this i can use the same file lof after log)
for (Handler handler : logger.getHandlers()) {
logger.removeHandler(handler);
handler.close();
handler.flush();
}
//I Create the FileHandler
FileHandler f;
try {
f = new FileHandler(
path + name, //pattern
10485760, //limit
3, // count
true); //append
//f.setFormatter(new SimpleFormatter());
f.setFormatter(new MyFormatter());
f.setLevel(levelToLog);
} catch (Exception ex) {
return null;
}
logger.addHandler(new ConsoleHandler());
logger.addHandler(f);
return logger;
}
PD1:しかし、戦争の再デプロイ時に、私はそれが新しいロガーを作成し、ロガークラスを呼び出しますが、最後のものはunclose続けます。そして、それは
あなたのロガーセットアップ/設定を投稿してください – pleft