@@ -6080,46 +6080,22 @@ def test_rollover(self):
6080
6080
print (tf .read ())
6081
6081
self .assertTrue (found , msg = msg )
6082
6082
6083
- def test_rollover_at_midnight (self ):
6084
- atTime = datetime .datetime .now ().time ()
6085
- fmt = logging .Formatter ('%(asctime)s %(message)s' )
6086
- for i in range (3 ):
6087
- fh = logging .handlers .TimedRotatingFileHandler (
6088
- self .fn , encoding = "utf-8" , when = 'MIDNIGHT' , atTime = atTime )
6089
- fh .setFormatter (fmt )
6090
- r2 = logging .makeLogRecord ({'msg' : f'testing1 { i } ' })
6091
- fh .emit (r2 )
6092
- fh .close ()
6093
- self .assertLogFile (self .fn )
6094
- with open (self .fn , encoding = "utf-8" ) as f :
6095
- for i , line in enumerate (f ):
6096
- self .assertIn (f'testing1 { i } ' , line )
6097
-
6098
- os .utime (self .fn , (time .time () - 1 ,)* 2 )
6099
- for i in range (2 ):
6100
- fh = logging .handlers .TimedRotatingFileHandler (
6101
- self .fn , encoding = "utf-8" , when = 'MIDNIGHT' , atTime = atTime )
6102
- fh .setFormatter (fmt )
6103
- r2 = logging .makeLogRecord ({'msg' : f'testing2 { i } ' })
6104
- fh .emit (r2 )
6105
- fh .close ()
6106
- rolloverDate = datetime .datetime .now () - datetime .timedelta (days = 1 )
6107
- otherfn = f'{ self .fn } .{ rolloverDate :%Y-%m-%d} '
6108
- self .assertLogFile (otherfn )
6109
- with open (self .fn , encoding = "utf-8" ) as f :
6110
- for i , line in enumerate (f ):
6111
- self .assertIn (f'testing2 { i } ' , line )
6112
- with open (otherfn , encoding = "utf-8" ) as f :
6113
- for i , line in enumerate (f ):
6114
- self .assertIn (f'testing1 { i } ' , line )
6115
-
6116
- def test_rollover_at_weekday (self ):
6083
+ def test_rollover_at_midnight (self , weekly = False ):
6084
+ os_helper .unlink (self .fn )
6117
6085
now = datetime .datetime .now ()
6118
6086
atTime = now .time ()
6087
+ if not 0.1 < atTime .microsecond / 1e6 < 0.9 :
6088
+ # The test requires all records to be emitted within
6089
+ # the range of the same whole second.
6090
+ time .sleep ((0.1 - atTime .microsecond / 1e6 ) % 1.0 )
6091
+ now = datetime .datetime .now ()
6092
+ atTime = now .time ()
6093
+ atTime = atTime .replace (microsecond = 0 )
6119
6094
fmt = logging .Formatter ('%(asctime)s %(message)s' )
6095
+ when = f'W{ now .weekday ()} ' if weekly else 'MIDNIGHT'
6120
6096
for i in range (3 ):
6121
6097
fh = logging .handlers .TimedRotatingFileHandler (
6122
- self .fn , encoding = "utf-8" , when = f'W { now . weekday () } ' , atTime = atTime )
6098
+ self .fn , encoding = "utf-8" , when = when , atTime = atTime )
6123
6099
fh .setFormatter (fmt )
6124
6100
r2 = logging .makeLogRecord ({'msg' : f'testing1 { i } ' })
6125
6101
fh .emit (r2 )
@@ -6129,15 +6105,15 @@ def test_rollover_at_weekday(self):
6129
6105
for i , line in enumerate (f ):
6130
6106
self .assertIn (f'testing1 { i } ' , line )
6131
6107
6132
- os .utime (self .fn , (time . time () - 1 ,)* 2 )
6108
+ os .utime (self .fn , (now . timestamp () - 1 ,)* 2 )
6133
6109
for i in range (2 ):
6134
6110
fh = logging .handlers .TimedRotatingFileHandler (
6135
- self .fn , encoding = "utf-8" , when = f'W { now . weekday () } ' , atTime = atTime )
6111
+ self .fn , encoding = "utf-8" , when = when , atTime = atTime )
6136
6112
fh .setFormatter (fmt )
6137
6113
r2 = logging .makeLogRecord ({'msg' : f'testing2 { i } ' })
6138
6114
fh .emit (r2 )
6139
6115
fh .close ()
6140
- rolloverDate = datetime . datetime . now () - datetime .timedelta (days = 7 )
6116
+ rolloverDate = now - datetime .timedelta (days = 7 if weekly else 1 )
6141
6117
otherfn = f'{ self .fn } .{ rolloverDate :%Y-%m-%d} '
6142
6118
self .assertLogFile (otherfn )
6143
6119
with open (self .fn , encoding = "utf-8" ) as f :
@@ -6147,6 +6123,9 @@ def test_rollover_at_weekday(self):
6147
6123
for i , line in enumerate (f ):
6148
6124
self .assertIn (f'testing1 { i } ' , line )
6149
6125
6126
+ def test_rollover_at_weekday (self ):
6127
+ self .test_rollover_at_midnight (weekly = True )
6128
+
6150
6129
def test_invalid (self ):
6151
6130
assertRaises = self .assertRaises
6152
6131
assertRaises (ValueError , logging .handlers .TimedRotatingFileHandler ,
0 commit comments