2016-08-02 47 views
1

我玩弄了Python Logstash Formatterin its wiki它推荐设置格式化以下选项:记录配置字典中的空括号“()”是什么意思?

"formatters": { "logstash":{ "()": "logstash_formatter.LogstashFormatter" } } 

这是为我工作,但我不能确定的空括号是什么,或者究竟是什么在本例中设置为logstash_formatter.LogstashFormatter

有人可以向我解释这里有关Python记录器的空括号吗?它几乎看起来像是一个空的元组,除非我无法理解如何为一个类设置一个空元组。

回答

3

如果检查出python docs for logging,你会看到这一点:

对象被配置为通过字典里面详细它们的配置进行说明。在某些地方,日志系统将能够从上下文中推断出一个对象是如何实例化的,但是当一个用户定义的对象被实例化时,系统将不知道如何执行此操作。为了为用户定义的对象实例化提供完全的灵活性,用户需要提供一个“工厂” - 一个可调用的对象,它用配置字典调用,并返回实例化的对象。这通过工厂的绝对进口路径通过特殊键'()'提供。

基本上这意味着logstash_formatter.LogstashFormatter是要创建新格式化程序的工厂。因此,当日志框架想要创建一个格式化程序时,它将确保import logstash_formatter然后执行诸如logstash_formatter.LogstashFormatter(*args, **kwargs)之类的操作。

事实上,如果你use the source, Luke,你可以看到,

+0

精氨酸我莫名其妙地错过了这个,当我通过记录文档阅读。谢谢! –

+0

我找到它时,我去了日志配置页面,搜索'()':) –

+0

当你搜索'()'时,你也会得到空函数声明。我昨天特别不安,所以我可能只是不耐烦 –

相关问题