@@ -6025,46 +6025,22 @@ def test_rollover(self):
6025
6025
print (tf .read ())
6026
6026
self .assertTrue (found , msg = msg )
6027
6027
6028
- def test_rollover_at_midnight (self ):
6029
- atTime = datetime .datetime .now ().time ()
6030
- fmt = logging .Formatter ('%(asctime)s %(message)s' )
6031
- for i in range (3 ):
6032
- fh = logging .handlers .TimedRotatingFileHandler (
6033
- self .fn , encoding = "utf-8" , when = 'MIDNIGHT' , atTime = atTime )
6034
- fh .setFormatter (fmt )
6035
- r2 = logging .makeLogRecord ({'msg' : f'testing1 { i } ' })
6036
- fh .emit (r2 )
6037
- fh .close ()
6038
- self .assertLogFile (self .fn )
6039
- with open (self .fn , encoding = "utf-8" ) as f :
6040
- for i , line in enumerate (f ):
6041
- self .assertIn (f'testing1 { i } ' , line )
6042
-
6043
- os .utime (self .fn , (time .time () - 1 ,)* 2 )
6044
- for i in range (2 ):
6045
- fh = logging .handlers .TimedRotatingFileHandler (
6046
- self .fn , encoding = "utf-8" , when = 'MIDNIGHT' , atTime = atTime )
6047
- fh .setFormatter (fmt )
6048
- r2 = logging .makeLogRecord ({'msg' : f'testing2 { i } ' })
6049
- fh .emit (r2 )
6050
- fh .close ()
6051
- rolloverDate = datetime .datetime .now () - datetime .timedelta (days = 1 )
6052
- otherfn = f'{ self .fn } .{ rolloverDate :%Y-%m-%d} '
6053
- self .assertLogFile (otherfn )
6054
- with open (self .fn , encoding = "utf-8" ) as f :
6055
- for i , line in enumerate (f ):
6056
- self .assertIn (f'testing2 { i } ' , line )
6057
- with open (otherfn , encoding = "utf-8" ) as f :
6058
- for i , line in enumerate (f ):
6059
- self .assertIn (f'testing1 { i } ' , line )
6060
-
6061
- def test_rollover_at_weekday (self ):
6028
+ def test_rollover_at_midnight (self , weekly = False ):
6029
+ os_helper .unlink (self .fn )
6062
6030
now = datetime .datetime .now ()
6063
6031
atTime = now .time ()
6032
+ if not 0.1 < atTime .microsecond / 1e6 < 0.9 :
6033
+ # The test requires all records to be emitted within
6034
+ # the range of the same whole second.
6035
+ time .sleep ((0.1 - atTime .microsecond / 1e6 ) % 1.0 )
6036
+ now = datetime .datetime .now ()
6037
+ atTime = now .time ()
6038
+ atTime = atTime .replace (microsecond = 0 )
6064
6039
fmt = logging .Formatter ('%(asctime)s %(message)s' )
6040
+ when = f'W{ now .weekday ()} ' if weekly else 'MIDNIGHT'
6065
6041
for i in range (3 ):
6066
6042
fh = logging .handlers .TimedRotatingFileHandler (
6067
- self .fn , encoding = "utf-8" , when = f'W { now . weekday () } ' , atTime = atTime )
6043
+ self .fn , encoding = "utf-8" , when = when , atTime = atTime )
6068
6044
fh .setFormatter (fmt )
6069
6045
r2 = logging .makeLogRecord ({'msg' : f'testing1 { i } ' })
6070
6046
fh .emit (r2 )
@@ -6074,15 +6050,15 @@ def test_rollover_at_weekday(self):
6074
6050
for i , line in enumerate (f ):
6075
6051
self .assertIn (f'testing1 { i } ' , line )
6076
6052
6077
- os .utime (self .fn , (time . time () - 1 ,)* 2 )
6053
+ os .utime (self .fn , (now . timestamp () - 1 ,)* 2 )
6078
6054
for i in range (2 ):
6079
6055
fh = logging .handlers .TimedRotatingFileHandler (
6080
- self .fn , encoding = "utf-8" , when = f'W { now . weekday () } ' , atTime = atTime )
6056
+ self .fn , encoding = "utf-8" , when = when , atTime = atTime )
6081
6057
fh .setFormatter (fmt )
6082
6058
r2 = logging .makeLogRecord ({'msg' : f'testing2 { i } ' })
6083
6059
fh .emit (r2 )
6084
6060
fh .close ()
6085
- rolloverDate = datetime . datetime . now () - datetime .timedelta (days = 7 )
6061
+ rolloverDate = now - datetime .timedelta (days = 7 if weekly else 1 )
6086
6062
otherfn = f'{ self .fn } .{ rolloverDate :%Y-%m-%d} '
6087
6063
self .assertLogFile (otherfn )
6088
6064
with open (self .fn , encoding = "utf-8" ) as f :
@@ -6092,6 +6068,9 @@ def test_rollover_at_weekday(self):
6092
6068
for i , line in enumerate (f ):
6093
6069
self .assertIn (f'testing1 { i } ' , line )
6094
6070
6071
+ def test_rollover_at_weekday (self ):
6072
+ self .test_rollover_at_midnight (weekly = True )
6073
+
6095
6074
def test_invalid (self ):
6096
6075
assertRaises = self .assertRaises
6097
6076
assertRaises (ValueError , logging .handlers .TimedRotatingFileHandler ,
0 commit comments