Reputation: 1089
Im configuring log4j appenders programtically to create different files at runtime. I am able to create files and i want to them to start fresh on each run.
String logfile = ("/home/Dev/" + hostname + id);
Logger logger =Logger.getLogger(testImpl.class);
RollingFileAppender fileAppender=null;
logger.setLevel(Level.DEBUG);
PatternLayout layout = new PatternLayout("%d{ISO8601} [%t] %-5p %c %x - %m%n");
try
{
fileAppender = new RollingFileAppender(layout, logfile);
logger.addAppender(fileAppender);
fileAppender.setAppend(false);
logger.setAdditivity(false);
}
catch (IOException e)
{
System.out.println("Failed to add appender !!");
}
logger.error("Message Number :"+i);
LogManager.resetConfiguration();
eventhough im setting
fileAppender.setAppend(false);
Im not able to start log files fresh.
Upvotes: 0
Views: 679
Reputation: 26
I encounnted the same issue. Neither RollingFileAppender nor FileAppender works if you call this constructor, which uses append default value(true) to open output stream. I think later setAppend(false) can't be work if it doesn't reopen the stream.
Finally I work it out with the constructor:
fileAppender = new RollingFileAppender(layout, logfile, false);
Good luck!
Upvotes: 1