Изменения в журнале с версии 2.5 - PullRequest
2 голосов
/ 06 января 2012

Я уже давно пользуюсь модулем регистрации Python, но недавно, когда тестировал совместимость со старыми версиями 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=

Существует ли простой способ обеспечить обратную совместимость конфигурации без дублирования большей части ее?

1 Ответ

0 голосов
/ 06 января 2012

Ваша проблема, скорее всего, вызвана пробелом в этой строке:

keys=consoleHandler, hunterFileHandler
                    ^

Из-за ошибки в 2.5 начальный пробел не пропускается, и вы получаете KeyError, потому что ключ неправильно установлен на " hunterFileHandler". Если вы измените эту строку на

keys=consoleHandler,hunterFileHandler

тогда файл должен загрузиться правильно.

Однако вы должны заметить, что в 2.5 и 2.6 было исправлено несколько ошибок, так что вы можете быть укушены одним из них (кроме того, который я упомянул). Смотрите комментарий jcollado к вашему вопросу.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...