每次应用程序运行或日志大小达到最大值或更改日期时,如何在python中生成新的日志文件?

时间:2019-07-16 06:38:28

标签: python logging

我想在python中配置日志文件时实现两件事:

  1. 每次发生以下任何一种情况时,都会生成一个新的日志文件

    • 调用该应用程序的新实例,即每次运行该应用程序时,或

    • 日志的大小达到最大值(可以说2000字节),或者

    • 在应用程序运行的中间更改日期(应用程序在午夜之前启动,而在午夜之后终止)

  2. 日志文件名应附加调用函数传递给它的参数。例如如果我的日志文件是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点的帮助。

0 个答案:

没有答案