我使用一个配置文件在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:没有名为“TimeRotatingFileHandler”的模块
我做错了什么?我还尝试将类行更改为class=handlers.TimeRotatingFileHandler
,但在这种情况下,我得到了下一个错误:
ImportError:没有名为“handlers”的模块
3条答案
按热度按时间zmeyuzjn1#
我在使用
dictConfig
时遇到了同样的问题。对我来说,解决方案是像这样完全限定模块路径:你也许想给予
vuktfyat2#
class=
是在logging
模块的名称空间中计算的,默认情况下它没有到handlers
的绑定。在调用
fileConfig()
之前,然后class=handlers.TimedRotatingHandler
应该可以工作。6qqygrtg3#
如果您决定创建一个自定义处理程序,那么您需要做的就是在代码顶部附近定义该处理程序,然后将其定义为logging.handlers中的一个对象。
示例:
现在你可以很容易地在你的配置文件中引用它。