我目前使用的是python-logstash-async库,本质上它只是python-logstash的包装器。
https://python-logstash-async.readthedocs.io
我试着阅读他们的文档,以便弄清楚如何为我发送的消息设置额外的顶级字段。
目前,我只能向记录器提供的extra对象添加额外的字段。
但是extra字典意味着我所有的额外字段都不在顶层。
不是发送:
{
"message":"blah"
"extra": {
"blax":"baz"
}
}我想发送:
{
"message":"blah"
"blax":"baz"
}他们的文档很快就提到了这一可能性:https://python-logstash-async.readthedocs.io/en/stable/config.html?highlight=tags
但在我的一生中,我不知道如何实际添加客户配置。
我需要一些使用自定义配置或知道任何其他方法来设置消息中的顶级字段的代码示例。
发布于 2018-11-07 10:06:33
我刚刚通过将extra字段添加到一个常量变量中,找到了一个快速的方法:
from logstash_async.constants import constants
constants.FORMATTER_LOGSTASH_MESSAGE_FIELD_LIST.append('my_new_top_field')
logger.info('blah',extra={'my_new_top_field':'bar'})似乎导致了这条消息
{
'message':'blah',
'my_new_top_field':'bar'
... etc
}正在发送中。
解决了我的问题。但是,我将把它保留为开放状态,以防有人提出使用配置对象的“适当”解决方案。
发布于 2020-07-08 06:05:06
从链接的文档中:extra_prefix: To disable grouping of the extra items and have them on the top level of the log event message, simply set this option to None or the empty string.
诀窍是将extra_prefix设置为None,然后将所有作为extra传递到日志记录的字段添加到Logstash事件的顶层。
示例(未测试):
handler = AsynchronousLogstashHandler(...)
formatter = LogstashFormatter(extra_prefix=None)
handler.setFormatter(formatter)
...
logger.info('blah',extra={'my_new_top_field':'bar'})https://stackoverflow.com/questions/53182679
复制相似问题