来自fileconfig的Python自定义日志处理程序

时间:2014-08-27 19:42:05

标签: python python-2.7 logging amazon-sns

我有一个基于ini文件配置的python日志记录工作设置。

我正在尝试创建一个自定义处理程序,以便在登录到特定记录器时发送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'

有什么想法吗?

1 个答案:

答案 0 :(得分:-2)

使用其他导入语句 import logging.conf module