@@ -305,9 +305,10 @@ def computeRollover(self, currentTime):
305305 dstAtRollover = time .localtime (newRolloverAt )[- 1 ]
306306 if dstNow != dstAtRollover :
307307 if not dstNow : # DST kicks in before next rollover, so we need to deduct an hour
308- newRolloverAt = newRolloverAt - 3600
308+ addend = - 3600
309309 else : # DST bows out before next rollover, so we need to add an hour
310- newRolloverAt = newRolloverAt + 3600
310+ addend = 3600
311+ newRolloverAt += addend
311312 result = newRolloverAt
312313 return result
313314
@@ -358,11 +359,20 @@ def doRollover(self):
358359 self .stream .close ()
359360 self .stream = None
360361 # get the time that this sequence started at and make it a TimeTuple
362+ currentTime = int (time .time ())
363+ dstNow = time .localtime (currentTime )[- 1 ]
361364 t = self .rolloverAt - self .interval
362365 if self .utc :
363366 timeTuple = time .gmtime (t )
364367 else :
365368 timeTuple = time .localtime (t )
369+ dstThen = timeTuple [- 1 ]
370+ if dstNow != dstThen :
371+ if dstNow :
372+ addend = 3600
373+ else :
374+ addend = - 3600
375+ timeTuple = time .localtime (t + addend )
366376 dfn = self .rotation_filename (self .baseFilename + "." +
367377 time .strftime (self .suffix , timeTuple ))
368378 if os .path .exists (dfn ):
@@ -373,19 +383,18 @@ def doRollover(self):
373383 os .remove (s )
374384 self .mode = 'w'
375385 self .stream = self ._open ()
376- currentTime = int (time .time ())
377386 newRolloverAt = self .computeRollover (currentTime )
378387 while newRolloverAt <= currentTime :
379388 newRolloverAt = newRolloverAt + self .interval
380389 #If DST changes and midnight or weekly rollover, adjust for this.
381390 if (self .when == 'MIDNIGHT' or self .when .startswith ('W' )) and not self .utc :
382- dstNow = time .localtime (currentTime )[- 1 ]
383391 dstAtRollover = time .localtime (newRolloverAt )[- 1 ]
384392 if dstNow != dstAtRollover :
385393 if not dstNow : # DST kicks in before next rollover, so we need to deduct an hour
386- newRolloverAt = newRolloverAt - 3600
394+ addend = - 3600
387395 else : # DST bows out before next rollover, so we need to add an hour
388- newRolloverAt = newRolloverAt + 3600
396+ addend = 3600
397+ newRolloverAt += addend
389398 self .rolloverAt = newRolloverAt
390399
391400class WatchedFileHandler (logging .FileHandler ):
0 commit comments