gpt4 book ai didi

logging - 使用日志记录模块重命名 python 中的日志文件

转载 作者:行者123 更新时间:2023-12-02 15:58:34 25 4
gpt4 key购买 nike

我需要重命名日志文件,但之后继续记录到该文件。我正在运行 Python 3.x 并使用 logging 模块来创建日志。

logger = logging.getLogger(r'mylogger')
handler = logging.FileHandler(r'mylog.txt', mode = r'w')
logger.addHandler(handler)
logger.info(r'msg 1')
logger.info(r'msg 2')

handler.renameFile(r'my_newlog.txt') # <--- Is something like this possible?

logger.info(r'msg 3')

有人知道这样的事情是否可能吗?如果没有,我该怎么做呢?我的一个想法是关闭文件(handler.close()),从记录器中删除处理程序,重命名旧文件,使用新文件名创建一个新处理程序并将其添加到记录器。然而问题是我需要创建一个完全相同的处理程序,即它需要具有与旧处理程序相同的属性(当然文件名除外)。有没有一种简单的方法来存储旧属性,然后使用它们来设置新处理程序的属性?

感谢任何帮助。

最佳答案

聚会迟到了,但我也遇到了这个问题,这就是我(暂时)解决它的方法。但需要更多测试。

请注意,就我而言,我确实可以访问之前的处理程序,因此我最终使用了之前使用的相同处理程序配置。我同意 FileHandler.'rename_file()' 方法会很棒。一个可能是通过子类化 FileHandler() 来完成,但这是另一天的练习。

#!/usr/bin/env python3

import os
import logging

logger_name1 = 'my_log.txt'
logger_name2 = 'my_new_log.txt'

logger = logging.getLogger('mylogger')
logger.level = logging.INFO
handler = logging.FileHandler(logger_name1, mode='w')
logger.addHandler(handler)
logger.info('msg 1')
logger.info('msg 2')

# handler.renameFile('my_newlog.txt') # <--- Is something like this possible?

logger.removeHandler(handler)

# Rename the logfile on disk
os.rename(logger_name1, logger_name2)

# New handler using new filename. Note the 'append' flag
new_handler = logging.FileHandler(logger_name2, mode='a')
logger.addHandler(new_handler)

# Try out the new logfile
logger.info('msg 3')

关于logging - 使用日志记录模块重命名 python 中的日志文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25530720/

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