我想在python中配置日志文件时实现两件事:
每次发生以下任何一种情况时,都会生成一个新的日志文件:
调用该应用程序的新实例,即每次运行该应用程序时,或
日志的大小达到最大值(可以说2000字节),或者
在应用程序运行的中间更改日期(应用程序在午夜之前启动,而在午夜之后终止)
日志文件名应附加调用函数传递给它的参数。例如如果我的日志文件是abc.log
,而我的输入参数是(每次都会更改)'i-y'
,则日志文件名应该是abc_i-y.log
。
到现在,我只能在每次运行该应用程序时生成一个新的日志文件,但无法根据大小或日期更改进行滚动。我正在使用的代码是:
import logging.handlers
import time
import os
from pro_path import ROOT_DIR
filename = "Pro/project.log"
logger = logging.getLogger('Pro')
fh = logging.handlers.RotatingFileHandler(filename, backupCount=10)
formatter = logging.Formatter('%(asctime)s: %(module)s: %(levelname)s: %(message)s')
fh.setFormatter(formatter)
logger.addHandler(fh)
logfile = (os.path.join(ROOT_DIR, filename))
roll_over = os.path.isfile(logfile)
if roll_over:
logger.debug('\n---\nLog closed at %s.\n---\n' % time.asctime())
fh.doRollover()
logger.debug('\n---\nLog started at %s.\n---\n' % time.asctime())
self.logger = logging.getLogger(__name__)
我尝试在RotatingFileHandler中指定maxBytes参数,但出现错误。
我只是从python开始,所以我什至不确定第1点中的所有3个能否一起实现,因为我所知道的是您可以按大小或日期进行滚动。
我们将非常感谢您提供有关如何调整此代码以同时达到第1点和第2点的帮助。