어제부터 몇 가지 사항을 알고 있습니다.JAVA LOGGIN의 app.log.X 파일 증가를 방지하고 제어하는 방법
Java에서 webapp (WAR)를 로깅하려고합니다.
로그를 만들고 FileHandler를 추가하고 로그 메시지를 보냅니다. 그러나 우리 모두가 알고있는 것처럼 파일 핸들러는 fush() 및 close()를 호출 할 때까지 새 파일에 대한 잠금을 유지합니다. 따라서 전쟁을 재배포 할 때 (또는 내가 개발 중에 실행하면 지속적으로 app)은 배포 당 하나의 파일을 만듭니다 (못생긴).
그래서이 동작을 피하려고했습니다. (퍼포먼스의 방식으로이 방법으로 수행되는지, 매주 파일을 열거 나 닫을 때마다 비용이 많이 들지는 모르겠지만) 잘 모르겠다. 그러나 나는 atach를 원한다. 로거가 메세지를 로그 할 때마다 핸들러와 플러시/클로즈. (그래서 나는 하나의 파일을 가지고있다).
하지만이 작업을 수행 할 방법을 찾지 못했습니다. 나는 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 :하지만 전쟁의 재배포에, 내가 로거 클래스를 호출, 그것은 새로운 로거를 만들 수 있지만 마지막 하나 열다 유지한다. 그리고 그 대답은 여기
로거 설정/구성 게시하시기 바랍니다. – pleft