From 46b4a26dd0e6e939fd591a1d114bf344bf8d0376 Mon Sep 17 00:00:00 2001 From: "David M. Lloyd" Date: Wed, 12 Sep 2012 13:56:03 -0500 Subject: [PATCH] Fix rotation logic to properly clear calendar fields --- .../handlers/PeriodicRotatingFileHandler.java | 20 +++++++++++-------- 1 file changed, 12 insertions(+), 8 deletions(-) diff --git a/src/main/java/org/jboss/logmanager/handlers/PeriodicRotatingFileHandler.java b/src/main/java/org/jboss/logmanager/handlers/PeriodicRotatingFileHandler.java index d69e52d9..406ff7df 100644 --- a/src/main/java/org/jboss/logmanager/handlers/PeriodicRotatingFileHandler.java +++ b/src/main/java/org/jboss/logmanager/handlers/PeriodicRotatingFileHandler.java @@ -201,22 +201,26 @@ private void calcNextRollover(final long fromTime) { switch (period) { default: case YEAR: - calendar.clear(Calendar.MONTH); + calendar.set(Calendar.MONTH, 0); case MONTH: - calendar.clear(Calendar.DAY_OF_MONTH); + calendar.set(Calendar.DAY_OF_MONTH, 0); calendar.clear(Calendar.WEEK_OF_MONTH); case WEEK: - calendar.clear(Calendar.DAY_OF_WEEK); + if (period == Period.WEEK) { + calendar.set(Calendar.DAY_OF_WEEK, 0); + } else { + calendar.clear(Calendar.DAY_OF_WEEK); + } calendar.clear(Calendar.DAY_OF_WEEK_IN_MONTH); case DAY: calendar.set(Calendar.HOUR_OF_DAY, 0); case HALF_DAY: - calendar.clear(Calendar.HOUR); + calendar.set(Calendar.HOUR, 0); case HOUR: - calendar.clear(Calendar.MINUTE); + calendar.set(Calendar.MINUTE, 0); case MINUTE: - calendar.clear(Calendar.SECOND); - calendar.clear(Calendar.MILLISECOND); + calendar.set(Calendar.SECOND, 0); + calendar.set(Calendar.MILLISECOND, 0); } // increment the relevant field switch (period) { @@ -236,7 +240,7 @@ private void calcNextRollover(final long fromTime) { calendar.add(Calendar.AM_PM, 1); break; case HOUR: - calendar.add(Calendar.HOUR, 1); + calendar.add(Calendar.HOUR_OF_DAY, 1); break; case MINUTE: calendar.add(Calendar.MINUTE, 1);