Python:从配置文件创建时间旋转日志

时间:2016-11-16 09:12:55

标签: python-3.x logging

我试图找出是否可以创建从配置文件中旋转日志的时间。

这是示例代码 它应该每分钟写一个新的日志文件。

import logging
import logging.config
import logging.handlers
import time

if __name__ == '__main__':

    logging.config.fileConfig('logging.cfg')
    logger = logging.getLogger("main")
    logger.info("start")
    while True:
        time.sleep(1)
        logger.info("log more")

" logging.cfg"文件看起来像这样。

我试图猜测TimedRotatingFileHandler定义的语法。

[loggers]
keys=root,main

[handlers]
keys=fileHandler, consoleHandler

[formatters]
keys=myFormatter

[logger_root]
level=CRITICAL
handlers=consoleHandler

[logger_main]
level=INFO
handlers=fileHandler
qualname=main

[handler_consoleHandler]
class=StreamHandler
level=WARN
formatter=myFormatter
args=(sys.stdout,)

[handler_fileHandler]
class=logging.handlers.TimedRotatingFileHandler
formatter=myFormatter
args=("example.log",)
path='timeexample.log'
when='m'
interval=1
backupCount=5

[formatter_myFormatter]
format=%(asctime)s - %(name)s - %(levelname)s - %(message)s
datefmt=

启动代码会创建一个有效的" example.log"哪个不旋转 并且不会抛出任何错误。

如何更改配置文件以使其旋转?

我在windows7 32bit上使用python 3.5.2进行原型设计并计划在生产中使用debian

2 个答案:

答案 0 :(得分:0)

有点猜测帮助:

像从代码中调用TimedRotatingFileHandler这样的参数可以正常工作。

[handler_fileHandler]
class=logging.handlers.TimedRotatingFileHandler
formatter=myFormatter
args=("timeexample.log", 'm', 1, 5, )

什么行不通的是使用名称:

args=("timeexample.log", when='m', interval=1, backupCount=5, )

答案 1 :(得分:-1)

更改您的处理程序,如下所示:

   [handler_fileHandler]
    class=handlers.TimedRotatingFileHandler
    interval=midnight
    backupCount=1
    formatter=complex
    level=NOTSET
    args=('example.log',)