在日志文件名中包含日期并创建一定大小的日志文件,同时使用`logging.config.dictConfig()`将最后3个日志文件保留在python中

时间:2018-09-11 15:04:41

标签: python python-3.x logging

我正在使用config设置python logger。我希望日志文件包含日期(可能还有时间)。我还希望在该日期之前,每个日志文件仅具有特定的大小,并且仅保留3个这样的旧日志文件。

例如,我要获取以下形式的日志文件:

mylog-2018-09-11.log
mylog-2018-09-11.log.1
mylog-2018-09-11.log.2
mylog-2018-09-11.log.3

我按照以下说明here使用以下形式的配置尝试了RotatingFileHandler:

config = {
    #...
    'handlers': {
        'file': {
            'class': 'logging.handlers.RotatingFileHandler',
            'filename': 'mplog.log',
            'mode': 'w',
            'formatter': 'detailed',
            'maxBytes': 10000,
            'backupCount': 3
        },
    },
    #...
}
logging.config.dictConfig(config)

并生成如下日志文件:

mylog.log
mylog.log.1
mylog.log.2
mylog.log.3

但是我无法理解,如何获取日志文件名称中的日期。是否可以使用配置和某些处理程序说RotatingFileHandlerTimeRotatingFileHandler来做到这一点?或者说我可以通过某种方式将日志文件名设置为包含dictConfig()调用之后的日期?

1 个答案:

答案 0 :(得分:0)

您的示例显示了一个RotatingFileHandler,它根据大小而不是日期旋转文件。您需要按照here中的说明使用TimedRotatingFileHandler。您可以按照完成RotatingFileHandler的相同方式对其进行配置。

更新:如果您要同时按日期大小进行限制,则需要使用处理程序子类,该子类可以完全满足您的要求。