Dav*_*cía 4 python logging python-3.x
我正在使用配置文件在 Python 应用程序中配置我的记录器。这是文件:
[loggers]
keys=root
[logger_root]
level=INFO
handlers=console
[handlers]
keys=console,file_rotating
[handler_console]
class=StreamHandler
level=WARNING
formatter=console
args=(sys.stderr,)
[handler_file_rotating]
class=TimeRotatingFileHandler
level=DEBUG
formatter=file
args=('../logs/twicker.log', 'd', 1, 5)
[formatters]
keys=console,file
[formatter_console]
format=%(levelname)s - %(message)s
[formatter_file]
format=%(asctime)s - %(levelname)s - %(module)s - %(message)s
Run Code Online (Sandbox Code Playgroud)
我的问题是 TimeRotatingFileHandler。每次运行该应用程序时,都会出现下一个错误:
导入错误:没有名为“TimeRotatingFileHandler”的模块
我做错了什么?我也尝试将类行更改为,class=handlers.TimeRotatingFileHandler但在这种情况下,我收到下一个错误:
导入错误:没有名为“处理程序”的模块
该class=在的命名空间进行评估logging模块,默认情况下,这并不有一个结合handlers。所以你可以这样做
import logging, logging.handlers
logging.handlers = logging.handlers
Run Code Online (Sandbox Code Playgroud)
在调用之前fileConfig(),然后class=handlers.TimedRotatingHandler应该可以工作。
我在使用时遇到了同样的问题dictConfig对我来说,解决方案是完全限定模块路径,如下所示:
[handler_file_rotating]
class=logging.handlers.TimeRotatingFileHandler
level=DEBUG
formatter=file
args=('../logs/twicker.log', 'd', 1, 5)
Run Code Online (Sandbox Code Playgroud)
你可能想试一试