我正在使用配置文件在 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
我的问题是 TimeRotatingFileHandler。每次运行该应用程序时,我都会收到下一个错误:
ImportError: No module named 'TimeRotatingFileHandler'
我做错了什么?我还尝试将类行更改为 class=handlers.TimeRotatingFileHandler
但在那种情况下我会收到下一个错误:
ImportError: No module named 'handlers'
最佳答案
class=
是在 logging
模块的命名空间中计算的,默认情况下它没有绑定(bind)到 handlers
。所以你可以做
import logging, logging.handlers
logging.handlers = logging.handlers
在调用 fileConfig()
之前,然后 class=handlers.TimedRotatingHandler
应该可以工作。
关于python - 使用 fileConfig 在 Python 中配置自定义处理程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28054864/