Hi,
How to close my log file when I undeploy my application?
Reason for this, when I redeploy my application, my custom rolling appender failed to rename my previous log file. It is due to the file is still open.
But when I shutdown JBoss, and then start it back, my rolling appender manage to rename the log file.
Please refer to my custom rolling appender code below;
public class Log4JRollingFileAppender extends RollingFileAppender { private String logDir = PropertiesUtil.getInstance().getString("log4j.log.dir", null); private String backupLogDir = PropertiesUtil.getInstance().getString("log4j.backup.log.dir", null); private boolean isAppend = PropertiesUtil.getInstance().getBoolean("log4j.is.append", true); private String logFileDateFormat = PropertiesUtil.getInstance().getString("log4j.file.date.format", null); public void rollOver(){ Calendar calendar = Calendar.getInstance(); SimpleDateFormat sdf = new SimpleDateFormat(logFileDateFormat); String logFilename = fileName.substring(fileName.lastIndexOf(File.separator), fileName.length()); String backupLogFilename = backupLogDir + File.separator + logFilename + "." + sdf.format(calendar.getTime()) + ".log"; File target = new File(backupLogFilename); closeFile(); File file = new File(fileName); boolean result = file.renameTo(target); if (result){ System.out.println("Successfully renaming file " + file + " to " + target); }else{ System.out.println("Unable to renaming file " + file + " to " + target); } try{ setFile(fileName, false, bufferedIO, bufferSize); }catch(IOException ioex){ LogLog.error("setFile(" + fileName + ", false) call failed.", ioex); } } public void setFile(String filename){ fileName = logDir + File.separator + filename; if(! isAppend){ File file = new File(fileName); if (file.exists()){ rollOver(); } } } public String getFile(){ return fileName; } }