Description
I'm using log4cxx 0.10.0 configured through xml to use a RollingFileAppender that rolls/triggers using a TimeBasedRollingPolicy.
- The append property on the RollingFileAppender is true.
- The FileNamePattern of the TimeBasedRollingPolicy is set to use the following pattern:
%d{yyyyMMdd.HH}.log
This setup I use in an embedded system that is not directly connected to the internet and has no battery powered rtc. This means that the system time is always 1970-01-01 01:00:00 at boot, normally time is synchronized by the user after boot.
In this case the following situation can occur:
- Current time is 2016-04-05 15:20:00, my application is logging to
20160405.15.log
- User restarts the system, time is now 1970-01-01 01:00, my application starts at boot and starts logging to
19700101.01.log
- User synchronizes time to 2016-04-05 15:25:00. Now the application truncates
20160405.15.log
and start writing logs to it.
I've traced the cause of this down to 1 line in timebasedrollingpolicy.cpp, in the end of ::rollover:
return new RolloverDescription( nextActiveFile, false, renameAction, compressAction);
In this line append is hardcoded to false, instead of using the append property.