我正在使用Python Logstash Formatter,并且在其Wiki中建议为Formatter设置以下选项:
"formatters": { "logstash":{ "()": "logstash_formatter.LogstashFormatter" } }
这对我来说是有效的,但是我不确定空白括号是什么意思,或者logstash_formatter.LogstashFormatter
在此示例中究竟将其设置为什么。
有人可以向我解释在这里空括号对Python记录器的含义吗?几乎看起来这将是一个空的元组,除了我无法理解如何为一个类设置一个空的元组是如何工作的。
如果您查看用于记录日志的python文档,则会看到以下内容:
字典描述了要配置的对象,这些字典详细说明了它们的配置。在某些地方,日志记录系统将能够从上下文中推断出如何实例化对象,但是当要实例化用户定义的对象时,系统将不知道如何执行此操作。为了为用户定义的对象实例化提供完全的灵活性,用户需要提供一个“ factory”(工厂)-可调用对象,该对象可通过配置字典进行调用并返回实例化的对象。这可以通过特殊键下的工厂绝对导入路径来表示
'()'
。
基本上,这意味着logstash_formatter.LogstashFormatter
将要创建新格式化程序的工厂。因此,当日志记录框架想要创建格式化程序时,将要确保import logstash_formatter
然后执行类似的操作logstash_formatter.LogstashFormatter(*args, **kwargs)
。
确实,如果您使用Luke的源代码,您会看到
if '()' in config:
factory = config['()'] # for use in exception handler
result = factory(**kwargs)
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句