python-3.x - python : Creating a time rotating log from a config file

标签 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 32 位上使用 python 3.5.2 进行原型(prototype)设计,并计划在生产中在 debian 上使用它

最佳答案

一点猜测有帮助:

像从代码中调用 TimedRotatingFileHandler 一样输入参数是可行的。

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

使用名称不起作用:

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

关于python-3.x - python : Creating a time rotating log from a config file,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40628042/

相关文章:

logging - 如何在不添加任何插件的情况下在 Heroku 中启用堆栈跟踪

python - 从右到左和从左到右打印得很好

Python 2 & 3 兼容的命名空间模块(使用 pip)

python - 将错误记录到两个不同的文件

logging - Ubuntu 14.04 桌面上的 Jenkins.log 位置

java - Flume 将输出格式从 .csv 更改为 .json

python-3.x - 如何在python的类中使用光线并行性?

python - 更改具有条件的数据框列

python-3.x - 错误 : No module named Elasticsearch

java - 启用跟踪日志级别