【问题标题】:Changes in logging since version 2.5自 2.5 版以来的日志记录更改
【发布时间】:2012-01-05 21:31:57
【问题描述】:

我已经使用python logging 模块有一段时间了,但是最近在测试与旧python版本的兼容性时遇到了一些麻烦:

Traceback (most recent call last):
  File "hunter.py", line 16, in <module>
    logging.config.fileConfig("logging.conf")
  File "/usr/lib/python2.5/logging/config.py", line 85, in fileConfig
    _install_loggers(cp, handlers)
  File "/usr/lib/python2.5/logging/config.py", line 229, in _install_loggers
    logger.addHandler(handlers[string.strip(hand)])
KeyError: 'hunterFileHandler'

使用以下配置文件(仅重要部分):

[loggers]
keys=root,hunter

[handlers]
keys=consoleHandler, hunterFileHandler

[formatters]
keys=simpleFormatter

[logger_root]
level=DEBUG
handlers=consoleHandler

[logger_hunter]
level=DEBUG
handlers=consoleHandler, hunterFileHandler
qualname=hunter
propagate=0

[handler_consoleHandler]
class=StreamHandler
level=DEBUG
formatter=simpleFormatter
args=(sys.stdout,)

[handler_hunterFileHandler]
class=handlers.RotatingFileHandler
level=DEBUG
formatter=simpleFormatter
args=("logs/hunter.log", "a", 0, 10,)

[formatter_simpleFormatter]
format=%(asctime)s:[%(name)s][%(levelname)5s] %(message)s
datefmt=

有没有一种简单的方法可以使配置向后兼容而无需复制大部分配置?

【问题讨论】:

  • 看起来这个question可能对您的问题有用。

标签: python logging


【解决方案1】:

您的问题很可能是由这一行中的空格引起的:

keys=consoleHandler, hunterFileHandler
                    ^

由于 2.5 中的一个错误,前导空格没有被跳过,并且您得到一个 KeyError,因为键被错误地设置为 " hunterFileHandler"。如果您将此行更改为

keys=consoleHandler,hunterFileHandler

那么文件应该正确加载。

但是,您应该注意,在 2.5 和 2.6 中修复了几个错误,因此您可能会被其中一个(除了我提到的那个)所困扰。请参阅 jcollado 对您的问题的评论。

【讨论】:

    猜你喜欢
    • 2018-07-29
    • 1970-01-01
    • 2020-11-19
    • 2018-01-24
    • 2011-11-12
    • 2012-02-08
    • 1970-01-01
    • 2016-02-20
    • 2021-01-18
    相关资源
    最近更新 更多