返回一个新的 TimedRotatingFileHandler 类实例。 指定的文件会被打开并用作日志记录的流。 对于轮换操作它还会设置文件名前缀。 轮换的发生是基于 when 和 interval 的积。
你可以使用 when 来指定 interval 的类型。 可能的值列表如下。 请注意它们不是大小写敏感的。
值
间隔类型
如果/如何使用 atTime
'S'
秒
忽略
'M'
分钟
忽略
'H'
小时
忽略
'D'
天
忽略
'W0'-'W6'
工作日(0=星期一)
用于计算初始轮换时间
'midnight'
如果未指定 atTime 则在午夜执行轮换,否则将使用 atTime。
用于计算初始轮换时间
当使用基于星期的轮换时,星期一为 'W0',星期二为 'W1',以此类推直至星期日为 'W6'。 在这种情况下,传入的 interval 值不会被使用。
系统将通过为文件名添加扩展名来保存旧日志文件。 扩展名是基于日期和时间的,根据轮换间隔的长短使用 strftime 格式 %Y-%m-%d_%H-%M-%S 或是其中有变动的部分。
当首次计算下次轮换的时间时(即当处理程序被创建时),现有日志文件的上次被修改时间或者当前时间会被用来计算下次轮换的发生时间。
如果 utc 参数为真值,将使用 UTC 时间;否则会使用本地时间。
如果 backupCount 不为零,则最多将保留 backupCount 个文件,而如果当轮换发生时创建了更多的文件,则最旧的文件会被删除。 删除逻辑使用间隔时间来确定要删除的文件,因此改变间隔时间可能导致旧文件被继续保留。
如果 delay 为真值,则会将文件打开延迟到首次调用 emit() 的时候。
如果 atTime 不为 None,则它必须是一个 datetime.time 的实例,该实例指定轮换在一天内的发生时间,用于轮换被设为“在午夜”或“在每星期的某一天”之类的情况。 请注意在这些情况下,atTime 值实际上会被用于计算 初始 轮换,而后续轮换将会通过正常的间隔时间计算来得出。
如果指定了 errors,它会被用来确定编码错误的处理方式。
注解
初始轮换时间的计算是在处理程序被初始化时执行的。 后续轮换时间的计算则仅在轮换发生时执行,而只有当提交输出时轮换才会发生。 如果不记住这一点,你就可能会感到困惑。 例如,如果设置时间间隔为“每分钟”,那并不意味着你总会看到(文件名中)带有间隔一分钟时间的日志文件;如果在应用程序执行期间,日志记录输出的生成频率高于每分钟一次,那么 你可以预期看到间隔一分钟时间的日志文件。 另一方面,如果(假设)日志记录消息每五分钟才输出一次,那么文件时间将会存在对应于没有输出(因而没有轮换)的缺失。
在 3.4 版更改:添加了 atTime 形参。
在 3.6 版更改:除了字符串值,也接受 Path 对象作为 filename 参数。
在 3.9 版更改:增加了 errors 形参。
doRollover()¶
执行上文所描述的轮换。
emit(record)¶
将记录输出到文件,以适应上文所描述的轮换。