我有一个基于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'
有什么想法吗?
答案 0 :(得分:-2)
使用其他导入语句 import logging.conf module