我正在開發一個web應用程序,我需要在運行時爲我的impex進程生成日誌文件。這裏是用例 我正在驗證XML文件並驗證錯誤正在處理中通過自定義的錯誤處理程序。這個錯誤hanlde將被傳遞給底層的驗證器(Jaxb 2.x驗證器),所以當創建這個錯誤hanlder的實例時,我必須創建日誌文件。 我們使用log4j的日誌記錄APITomcat服務器中的Log4j FileAppender問題
這裏是代碼在運行時創建日誌文件
XMLErrorHandler<Object> errorHandler=new XMLErrorHandler<Object>(logFileLocation);
logFileName=errorHandler.getLogFileName();
validator.setErrorHandler(errorHandler);
validator.validate(source);
我創造XMLErrorHandler構造函數中的日誌文件,因爲這是唯一的一點,我有控制這裏日誌文件創建
FileAppender appender;
try {
appender = new FileAppender(layout, sb.toString(), false);
log.addAppender(appender);
log.setAdditivity(false);
log.setLevel(Level.WARN);
} catch (IOException e) {
e.printStackTrace();
}
一切的代碼工作正常並且文件被正確創建,以及由記錄到相應的地方被寫入。 但如果我重新啓動我的服務器真正的問題開始和記錄器開始將日誌內容不僅附加到其當前的日誌文件,而且還爲服務器運行時爲此過程創建的所有文件。這裏是詳細信息 讓我們假設我有3個日誌(A,B,C)文件已經在每個日誌文件中有3行的位置,C是在這個過程中創建的最新文件。 所以當我重新啓動我的服務器(通過resrarting我的意思是我停止從控制檯的tomcat)它如何將數據添加到previos所有日誌文件在此fashin C仍然有3行 B現在有6行 A現在有9行
看來,我創建的appender仍然是開放的或有參考,不知道究竟發生了什麼。 在這方面的任何幫助將是有益的。
所有我的意思是,既然事情都在發展,所以我剛剛停止我從月食服務器(Tomcat)的,比again.when啓動它我來控制我的服務器從eclipse上面的行爲發生了。我注意到,當服務器運行時,它不會追加所有文件中的內容,當我停止服務器時發生此行爲。 – 2011-02-14 14:00:34