gpt4 book ai didi

python - 日志记录,在文件翻转时处理丢失的日志文件

转载 作者:太空宇宙 更新时间:2023-11-03 11:53:54 27 4
gpt4 key购买 nike

有人无意中移动了 python 程序使用的打开日志文件。该程序使用带有 TimedRotatingFileHandler 的日志记录模块。当需要翻转文件时,会输出此错误:

Traceback (most recent call last):
File "/python_root/lib/logging/handlers.py", line 78, in emit
self.doRollover()
File "/python_root/lib/logging/handlers.py", line 338, in doRollover
os.rename(self.baseFilename, dfn)
OSError: [Errno 2] no such file or directory
Logged from file logtest.py, line 16

此错误在每次后续尝试记录内容时重复出现。记录的消息没有进入旧的(移动的)日志文件。

这会重现问题(如果您移动日志文件:))

import time
import logging
from logging import handlers

f = logging.Formatter( "%(asctime)s %(message)s" )
h = handlers.TimedRotatingFileHandler(
"testlog", when='s', interval=5, backupCount=10 )
h.setFormatter( f )
logger = logging.getLogger( 'test' )
logger.setLevel( logging.INFO )
logger.addHandler( h )
logger.info( "LOGTEST started" )
for i in range( 10 ):
time.sleep( 5 )
logger.info( "Test logging " + str( i ) )

我担心的是后续的日志消息会丢失。我想要实现的是,按偏好的升序排列:

  1. 退出的异常。
  2. 我可以捕获并处理的异常。
  3. 记录器显示错误,但后续消息转到旧日志文件。
  4. 记录器显示此错误,但会打开一个新的日志文件并照常继续。

我已经浏览了文档/食谱以寻找相关的钩子(Hook),但没有任何东西出现在我面前。同样欢迎指点。

谢谢你的帮助,

乔纳森

最佳答案

doRollover 中引发的异常被传递给处理程序的 handleError 方法。您可以定义一个子类并覆盖此方法来执行您想要执行的任何操作来处理错误。

关于python - 日志记录,在文件翻转时处理丢失的日志文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18619431/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com