@@ -5654,46 +5654,22 @@ def test_rollover(self):
5654
5654
print (tf .read ())
5655
5655
self .assertTrue (found , msg = msg )
5656
5656
5657
- def test_rollover_at_midnight (self ):
5658
- atTime = datetime .datetime .now ().time ()
5659
- fmt = logging .Formatter ('%(asctime)s %(message)s' )
5660
- for i in range (3 ):
5661
- fh = logging .handlers .TimedRotatingFileHandler (
5662
- self .fn , encoding = "utf-8" , when = 'MIDNIGHT' , atTime = atTime )
5663
- fh .setFormatter (fmt )
5664
- r2 = logging .makeLogRecord ({'msg' : f'testing1 { i } ' })
5665
- fh .emit (r2 )
5666
- fh .close ()
5667
- self .assertLogFile (self .fn )
5668
- with open (self .fn , encoding = "utf-8" ) as f :
5669
- for i , line in enumerate (f ):
5670
- self .assertIn (f'testing1 { i } ' , line )
5671
-
5672
- os .utime (self .fn , (time .time () - 1 ,)* 2 )
5673
- for i in range (2 ):
5674
- fh = logging .handlers .TimedRotatingFileHandler (
5675
- self .fn , encoding = "utf-8" , when = 'MIDNIGHT' , atTime = atTime )
5676
- fh .setFormatter (fmt )
5677
- r2 = logging .makeLogRecord ({'msg' : f'testing2 { i } ' })
5678
- fh .emit (r2 )
5679
- fh .close ()
5680
- rolloverDate = datetime .datetime .now () - datetime .timedelta (days = 1 )
5681
- otherfn = f'{ self .fn } .{ rolloverDate :%Y-%m-%d} '
5682
- self .assertLogFile (otherfn )
5683
- with open (self .fn , encoding = "utf-8" ) as f :
5684
- for i , line in enumerate (f ):
5685
- self .assertIn (f'testing2 { i } ' , line )
5686
- with open (otherfn , encoding = "utf-8" ) as f :
5687
- for i , line in enumerate (f ):
5688
- self .assertIn (f'testing1 { i } ' , line )
5689
-
5690
- def test_rollover_at_weekday (self ):
5657
+ def test_rollover_at_midnight (self , weekly = False ):
5658
+ os_helper .unlink (self .fn )
5691
5659
now = datetime .datetime .now ()
5692
5660
atTime = now .time ()
5661
+ if not 0.1 < atTime .microsecond / 1e6 < 0.9 :
5662
+ # The test requires all records to be emitted within
5663
+ # the range of the same whole second.
5664
+ time .sleep ((0.1 - atTime .microsecond / 1e6 ) % 1.0 )
5665
+ now = datetime .datetime .now ()
5666
+ atTime = now .time ()
5667
+ atTime = atTime .replace (microsecond = 0 )
5693
5668
fmt = logging .Formatter ('%(asctime)s %(message)s' )
5669
+ when = f'W{ now .weekday ()} ' if weekly else 'MIDNIGHT'
5694
5670
for i in range (3 ):
5695
5671
fh = logging .handlers .TimedRotatingFileHandler (
5696
- self .fn , encoding = "utf-8" , when = f'W { now . weekday () } ' , atTime = atTime )
5672
+ self .fn , encoding = "utf-8" , when = when , atTime = atTime )
5697
5673
fh .setFormatter (fmt )
5698
5674
r2 = logging .makeLogRecord ({'msg' : f'testing1 { i } ' })
5699
5675
fh .emit (r2 )
@@ -5703,15 +5679,15 @@ def test_rollover_at_weekday(self):
5703
5679
for i , line in enumerate (f ):
5704
5680
self .assertIn (f'testing1 { i } ' , line )
5705
5681
5706
- os .utime (self .fn , (time . time () - 1 ,)* 2 )
5682
+ os .utime (self .fn , (now . timestamp () - 1 ,)* 2 )
5707
5683
for i in range (2 ):
5708
5684
fh = logging .handlers .TimedRotatingFileHandler (
5709
- self .fn , encoding = "utf-8" , when = f'W { now . weekday () } ' , atTime = atTime )
5685
+ self .fn , encoding = "utf-8" , when = when , atTime = atTime )
5710
5686
fh .setFormatter (fmt )
5711
5687
r2 = logging .makeLogRecord ({'msg' : f'testing2 { i } ' })
5712
5688
fh .emit (r2 )
5713
5689
fh .close ()
5714
- rolloverDate = datetime . datetime . now () - datetime .timedelta (days = 7 )
5690
+ rolloverDate = now - datetime .timedelta (days = 7 if weekly else 1 )
5715
5691
otherfn = f'{ self .fn } .{ rolloverDate :%Y-%m-%d} '
5716
5692
self .assertLogFile (otherfn )
5717
5693
with open (self .fn , encoding = "utf-8" ) as f :
@@ -5721,6 +5697,9 @@ def test_rollover_at_weekday(self):
5721
5697
for i , line in enumerate (f ):
5722
5698
self .assertIn (f'testing1 { i } ' , line )
5723
5699
5700
+ def test_rollover_at_weekday (self ):
5701
+ self .test_rollover_at_midnight (weekly = True )
5702
+
5724
5703
def test_invalid (self ):
5725
5704
assertRaises = self .assertRaises
5726
5705
assertRaises (ValueError , logging .handlers .TimedRotatingFileHandler ,
0 commit comments