我正在尝试找出是否可以从配置文件创建时间轮换日志。
这是示例代码 它应该每分钟写入一个新的日志文件。
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/