处理程序的args中的外部对象

时间:2015-01-28 09:59:47

标签: python logging

我的logging.ini中有自定义处理程序。这个处理程序要求我传递另一个外部类的方法作为第一个参数。日志记录文档说我可以通过在字符串前加ext://来引用外部对象: access to external objects docs

所以我正在尝试这样的事情:

[handler_rabbitHandler]
class=company.common.logger.GELFRabbitHandler
level=DEBUG
formatter=simpleFormatter
args=('ext://company.common.logger.AMQPFactory.get_connection',)

但似乎在args的情况下,ext://未按照文档中的描述进行解析。有没有办法在args中引用外部对象的方法?

注意:

许多示例在args中显示sys.stdout,如下所示:

args=(sys.stdout,)

如果我对自定义对象尝试相同操作,则会出现导入错误,但我不知道如何将其导入日志记录的命名空间:

args=(company.common.logger.AMQPFactory.get_connection,)

结果:

NameError: name 'company' is not defined

1 个答案:

答案 0 :(得分:0)

ext://内容仅适用于基于字典的配置(dictConfig)和基于ini文件的配置(fileConfig),这就是你的意思正在使用。

您可以摆脱错误"'公司'没有定义"通过确保您设置

logging.company = company

在致电fileConfig之前。但实际上,如果可以的话,最好切换到dictConfig