Enumeration appenders = logger.getAllAppenders();
while(appenders.hasMoreElements()) {
Appender appender = (Appender) appenders.nextElement();
//try to find the file appender.
if ( FileAppender.class.isAssignableFrom(appender.getClass()) ) {
FileAppender fileAppender = (FileAppender) appender;
//verbose
if (logger.isTraceEnabled()) {
logger.trace("Find a file appender: " + fileAppender.getName());
logger.trace("Logging file: " + fileAppender.getFile());
}
//change the file it writes to
String oldfile = fileAppender.getFile();
logger.info("Log file destination is about to change. New file: " + filename);
fileAppender.setFile(filename);
fileAppender.activateOptions();
logger.info("Log file destination changed. Old file: " + oldfile);
//set flag
hasFileAppender = true;
//there should only be one. but just in case, just change the first file appender
break;