首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何用python logstash logger设置额外的to level字段?

如何用python logstash logger设置额外的to level字段?
EN

Stack Overflow用户
提问于 2018-11-07 09:59:17
回答 2查看 565关注 0票数 1

我目前使用的是python-logstash-async库,本质上它只是python-logstash的包装器。

https://python-logstash-async.readthedocs.io

我试着阅读他们的文档,以便弄清楚如何为我发送的消息设置额外的顶级字段。

目前,我只能向记录器提供的extra对象添加额外的字段。

但是extra字典意味着我所有的额外字段都不在顶层。

不是发送:

代码语言:javascript
复制
{
 "message":"blah"
 "extra": {
  "blax":"baz"
 }
}

我想发送:

代码语言:javascript
复制
{
 "message":"blah"
  "blax":"baz"
}

他们的文档很快就提到了这一可能性:https://python-logstash-async.readthedocs.io/en/stable/config.html?highlight=tags

但在我的一生中,我不知道如何实际添加客户配置。

我需要一些使用自定义配置或知道任何其他方法来设置消息中的顶级字段的代码示例。

EN

回答 2

Stack Overflow用户

发布于 2018-11-07 10:06:33

我刚刚通过将extra字段添加到一个常量变量中,找到了一个快速的方法:

代码语言:javascript
复制
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'})

似乎导致了这条消息

代码语言:javascript
复制
{
  'message':'blah',
  'my_new_top_field':'bar'
  ... etc
}

正在发送中。

解决了我的问题。但是,我将把它保留为开放状态,以防有人提出使用配置对象的“适当”解决方案。

票数 2
EN

Stack Overflow用户

发布于 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事件的顶层。

示例(未测试):

代码语言:javascript
复制
handler = AsynchronousLogstashHandler(...)
formatter = LogstashFormatter(extra_prefix=None)
handler.setFormatter(formatter)
...
logger.info('blah',extra={'my_new_top_field':'bar'})
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53182679

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档