[logback-dev] [JIRA] Commented: (LBCORE-21) TimeBasedRollingPolicy do NOT work as expected
Ceki Gulcu (JIRA)
noreply-jira at qos.ch
Thu Oct 30 20:01:21 CET 2008
[ http://jira.qos.ch/browse/LBCORE-21?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=10861#action_10861 ]
Ceki Gulcu commented on LBCORE-21:
----------------------------------
The link to revision 1917 was mistakenly associated with this bug. It should have been associated with LBCORE-26.
> TimeBasedRollingPolicy do NOT work as expected
> ----------------------------------------------
>
> Key: LBCORE-21
> URL: http://jira.qos.ch/browse/LBCORE-21
> Project: logback-core
> Issue Type: Bug
> Components: Rolling
> Affects Versions: unspecified
> Environment: Operating System: Linux
> Platform: All
> Reporter: Eric
> Assignee: Logback dev list
> Priority: Blocker
>
> When I use TimeBasedRollingPolicy as the rolling & triggering policy for the RollingFileAppender, only the last log line appears in the new log file after the 1st rolling trigger.
> The reason is that the TimeBasedRollingPolicy kept rolling for every log event after the 1st rolling trigger. It causes by a bug in isTriggeringEvent() method - the method uses the un-initialized value of 'currentTime' (which is 0) to set the time of the 'lastCheck' Date object.
> Original method :
> public boolean isTriggeringEvent(File activeFile, final Object event) {
> //currentTime= System.currentTimeMillis();
> if (getCurrentTime() >= nextCheck) {
> //addInfo("Time to trigger roll-over");
> // We set the elapsedPeriodsFileName before we set the 'lastCheck' variable
> // The elapsedPeriodsFileName corresponds to the file name of the period
> // that just elapsed.
> elapsedPeriodsFileName = activeFileNamePattern.convertDate(lastCheck);
> //addInfo("elapsedPeriodsFileName set to "+elapsedPeriodsFileName);
> lastCheck.setTime(currentTime);
> nextCheck = rc.getNextCheckMillis(lastCheck);
>
> Date x = new Date();
> x.setTime(nextCheck);
> //addInfo("Next check on "+ x);
> return true;
> } else {
> return false;
> }
> }
> Suggested Changes - uses a local long variable to store the value of getCurrentTime() and uses it in the method for comparison and assignment:
> public boolean isTriggeringEvent(File activeFile, final Object event) {
> //currentTime= System.currentTimeMillis();
> long curT = getCurrentTime();
> if (curT >= nextCheck) {
> //addInfo("Time to trigger roll-over");
> // We set the elapsedPeriodsFileName before we set the 'lastCheck' variable
> // The elapsedPeriodsFileName corresponds to the file name of the period
> // that just elapsed.
> elapsedPeriodsFileName = activeFileNamePattern.convertDate(lastCheck);
> //addInfo("elapsedPeriodsFileName set to "+elapsedPeriodsFileName);
> lastCheck.setTime(curT);
> nextCheck = rc.getNextCheckMillis(lastCheck);
> //Date x = new Date();
> //x.setTime(nextCheck);
> //addInfo("Next check on "+ x);
> return true;
> } else {
> return false;
> }
> }
--
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: http://jira.qos.ch/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira
More information about the logback-dev
mailing list