重新开始记录到新文件(Python) [英] Restart logging to a new file (Python)

查看:161
本文介绍了重新开始记录到新文件(Python)的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在使用以下代码初始化应用程序中的日志记录:

I'm using the following code to initialize logging in my application:

logger = logging.getLogger()
logger.setLevel(logging.DEBUG)

# log to a file
directory = '/reserved/DYPE/logfiles'
now = datetime.now().strftime("%Y%m%d_%H%M%S")
filename = os.path.join(directory, 'dype_%s.log' % now)
file_handler = logging.FileHandler(filename)
file_handler.setLevel(logging.DEBUG)
formatter = logging.Formatter("%(asctime)s %(filename)s, %(lineno)d, %(funcName)s: %(message)s")
file_handler.setFormatter(formatter)
logger.addHandler(file_handler)

# log to the console
console_handler = logging.StreamHandler()
level = logging.INFO
console_handler.setLevel(level)
logger.addHandler(console_handler)

logging.debug('logging initialized')

如何关闭当前的日志文件并重新开始记录到新文件?

How can I close the current logging file and restart logging to a new file?

注意:我不想使用RotatingFileHandler,因为我想完全控制所有文件名.

推荐答案

如果要使用removeHandleraddHandler可以手动重新分配处理程序,或者可以访问logger.handlers[index_of_handler_here].stream并手动替换流,但我建议前者胜过后者.

You can manually re-assign the handler if you want using the removeHandler and addHandler OR, you can access logger.handlers[index_of_handler_here].stream and replace the stream manually, but I'd recommend the former over the latter.

logger.handlers[0].stream.close()
logger.removeHandler(logger.handlers[0])

file_handler = logging.FileHandler(filename)
file_handler.setLevel(logging.DEBUG)
formatter = logging.Formatter("%(asctime)s %(filename)s, %(lineno)d, %(funcName)s: %(message)s")
file_handler.setFormatter(formatter)
logger.addHandler(file_handler)

这篇关于重新开始记录到新文件(Python)的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆