apache log4j: 3 day log retention with daily rolling

Viewed 63

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;
}
0 Answers
Related