正在将FileHandler写入其他文件夹进行备份

2024-10-03 21:33:59 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在使用Python logger,创建一个日志文件(/opt/feedlog.log

我特别尝试创建一个备份文件夹来归档旧的日志文件

/opt/archive

将包含

/opt/archive/feedlog.log.1
/opt/archive/feedlog.log.2
/opt/archive/feedlog.log.3

下面是我的示例代码:

import logging
from logging.handlers import RotatingFileHandler

logger = logging.getLogger('feed_logger')
logger.setLevel(logging.DEBUG)
handler = RotatingFileHandler('/opt/feedlog.log', maxBytes=1000, backupCount=10)
logger.addHandler(handler)

for _ in range(10000):
        logger.warning('Hello world !!!')

我有没有办法强迫RotatingFileHandler在不同的文件夹archive而不是原始文件夹中创建备份文件。你知道吗

任何输入都会有帮助!你知道吗

谢谢!你知道吗


Tags: 文件代码fromimport文件夹log示例logging
1条回答
网友
1楼 · 发布于 2024-10-03 21:33:59

最简单的方法是创建一个函数来执行此操作,并将其作为rotator参数传递给RotatingFileHandler
另一种方法是创建自己版本的RotatingFileHandler。它应该比听起来容易。查看https://docs.python.org/3/library/logging.handlers.html#logging.handlers.RotatingFileHandler您所需要的只是创建您自己的类,从这个类继承并重写rotate。你知道吗

from logging.handlers import RotatingFileHandler

class MyRotatingFileHandler(RotatingFileHandler):
    # copied from python source
    def rotate(self, source, dest): # change the destination here
        if not callable(self.rotator):
            # Issue 18940: A file may not have been created if delay is True.
            if os.path.exists(source):
                os.rename(source, dest)
        else:
            self.rotator(source, dest)

相关问题 更多 >