From: Vinay Sajip Date: Mon, 21 Jan 2008 17:03:46 +0000 (+0000) Subject: Fix: #1836: Off-by-one bug in TimedRotatingFileHandler rollover calculation. Patch... X-Git-Tag: v2.5.2c1~64 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=8123ef2ec02f34f838d58744a7c54c43be2f3568;p=python Fix: #1836: Off-by-one bug in TimedRotatingFileHandler rollover calculation. Patch thanks to Kathryn M. Kowalski. --- diff --git a/Lib/logging/handlers.py b/Lib/logging/handlers.py index 67d8576f70..1e3e29854c 100644 --- a/Lib/logging/handlers.py +++ b/Lib/logging/handlers.py @@ -229,13 +229,16 @@ class TimedRotatingFileHandler(BaseRotatingHandler): # Days to rollover is 6 - 5 + 3, or 4. In this case, it's the # number of days left in the current week (1) plus the number # of days in the next week until the rollover day (3). + # The calculations described in 2) and 3) above need to have a day added. + # This is because the above time calculation takes us to midnight on this + # day, i.e. the start of the next day. if when.startswith('W'): day = t[6] # 0 is Monday if day != self.dayOfWeek: if day < self.dayOfWeek: - daysToWait = self.dayOfWeek - day - 1 + daysToWait = self.dayOfWeek - day else: - daysToWait = 6 - day + self.dayOfWeek + daysToWait = 6 - day + self.dayOfWeek + 1 self.rolloverAt = self.rolloverAt + (daysToWait * (60 * 60 * 24)) #print "Will rollover at %d, %d seconds from now" % (self.rolloverAt, self.rolloverAt - currentTime)