At any given time I want my log files like: mylog.log, mylog.log.1, mylog.log.2, reflecting today's logs, yesterday's log, and the day before yesterday's log, respectively. This has to be achieved via Apache log4j/log4j-extras (v1.2.17), through code (no xml config).
The logger initialized below, however, seems to overwrite every day mylog.log. What am I doing wrong?
private static Logger fileLogger() {
TimeBasedRollingPolicy trigPolicy = new TimeBasedRollingPolicy();
trigPolicy.setFileNamePattern("mylog.log" + ".%d");
trigPolicy.setActiveFileName("mylog.log" );
trigPolicy.activateOptions();
FixedWindowRollingPolicy rollPolicy = new FixedWindowRollingPolicy();
rollPolicy.setFileNamePattern("mylog.log" + ".%i");
rollPolicy.setActiveFileName("mylog.log" );
rollPolicy.setMaxIndex(3);
rollPolicy.setMinIndex(1);
rollPolicy.activateOptions();
RollingFileAppender appender = new RollingFileAppender();
appender.setFile("./mylog.log");
appender.setLayout(new PatternLayout("[%d{yyyy.MM.dd::HH:mm:ss}] %-5p: %m%n"));
appender.setThreshold(Level.DEBUG);
appender.setAppend(true);
appender.setRollingPolicy(rollPolicy);
appender.setTriggeringPolicy(trigPolicy);
appender.activateOptions();
Logger logger = LogManager.getLogger(Foo.class);
logger.addAppender(appender);
return logger;
}