Пользовательский обработчик журнала Python из fileconfig

У меня есть рабочая настройка ведения журнала python на основе конфигурации файла ini.

Я пытаюсь создать собственный обработчик для отправки уведомления aws-sns при регистрации в определенном регистраторе.

Я смог добиться этого, настроив регистраторы и обработчики из кода. Нравится => http://pantburk.info/?blog=77

Но если я попытаюсь настроить регистратор из файла конфигурации, он не сработает. Я предполагаю, что модуль ведения журнала Python пытается найти собственный обработчик внутри пакета python logging.handlers. Мой пользовательский класс находится в моем приложении.

Мой файл конфигурации:

[loggers]
 keys=root,sns

[handlers]
 keys=consoleHandler,snshandler

[logger_root]
 handlers=consoleHandler
 level=CRITICAL

[logger_sns]
 handlers=snshandler
 level=DEBUG
 propagate=0
 qualname=sns

[handler_snshandler]
 class=coco.loggers.sns_handler.SNSHandler
 formatter=simpleFormatter
 level=DEBUG

[formatter_simpleFormatter]
 datefmt=%Y-%m-%d %H:%M:%S
 format=%(asctime)s - %(name)s - %(levelname)s - %(message)s

[formatters]
 keys=simpleFormatter

Мой собственный класс обработчика: coco.loggers.sns_handler.SNSHandler.

import logging
from coco.notifier.sns import SNS

class SNSHandler(logging.Handler):
    def __init__(self):
        super(SNSHandler, self).__init__()

    def emit(self, record):
        SNS().queue(message=record.getMessage())

Я настраиваю регистратор из файла конфигурации следующим образом:

logging.config.fileConfig('/path/to/conf')

Я вижу это исключение, когда пытаюсь настроить регистратор

AttributeError: 'module' object has no attribute 'loggers'

есть идеи?


person Sadish Ravi    schedule 27.08.2014    source источник


Ответы (1)


Используйте дополнительный оператор импорта для импорта модуля logging.conf

person Tejas    schedule 25.02.2015