【问题标题】:ImportError when configuring python's logging module with a dict and custom handler使用 dict 和自定义处理程序配置 python 的日志记录模块时的 ImportError
【发布时间】:2017-02-16 05:55:28
【问题描述】:

我已经为 python 的日志记录包编写了一个自定义的日志记录处理程序。此处理程序可能有效,也可能无效,但这超出了问题的范围。

我正在尝试使用配置字典指定处理程序。然而,日志包似乎无法找到正确的类。这是我的配置字典的相关部分:

"file": {
    "class": "iis.logging.LockingFileHandler",
    .
    .
    .
}

在文件configuration/development.py 中定义。它被导入并传递给文件iis/__init__.py 中的logging.config.dictConfigLockingFileHandler 在文件 iis/logging.py 中定义。 configurationiis 都在我的路上。

当我运行烧瓶(导入 iis/__init__,我收到以下错误消息:

Traceback (most recent call last):
  File "/usr/lib64/python3.5/logging/config.py", line 384, in resolve
    self.importer(used)
ImportError: No module named 'iis.logging.LockingFileHandler'; 'iis.logging' is not a package

接下来是由这个引起的一堆异常。我怀疑我在这里错过了一些技巧。有什么想法吗?

【问题讨论】:

  • iis/logging 目录下有__init__.py 文件吗?
  • @S.deMelo 没有iis/logging 目录。 LockingFileHandler 定义在iis/logging.py
  • 是的,对不起。错误消息很奇怪,因为它似乎将“iis.logging.LockingFileHandler”视为一个模块。
  • @S.deMelo 作为记录,我试图将LockingFileHandler 放在iis/logging/handlers.py 中,但这只会将问题移到层次结构的下一级。

标签: python logging flask python-3.5


【解决方案1】:

我认为我是 Python 令人困惑的(!)导入语义的受害者。模块iis.logging 遮蔽了全局logging 模块(不知何故)。重命名为 iss.log 成功了。

【讨论】:

    猜你喜欢
    • 2011-07-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-08
    • 1970-01-01
    • 1970-01-01
    • 2015-01-13
    相关资源
    最近更新 更多