[英]Modify fluentd json with record_transformer plugin
I have logs like this:我有这样的日志:
{
"posts": {
"key1": "value123",
"key2": "abcdge123",
"key3": "abcdge345",
"....": "....",
"something": "something"
},
"execute_time": 123,
"code": 200,
}
Here's fluentd configuration for record_transformer
:这是
record_transformer
的流利配置:
<filter tag.hellow>
@type record_transformer
enable_ruby true
<record>
posts ${ if record['posts'].has_key?('key1'); Base64.strict_encode64(record['posts']['key1'].to_s); end }
</record>
</filter>
This deletes the posts
field and recreates so that all the other keys in the posts
field are lost ie:这将删除
posts
字段并重新创建,以便posts
字段中的所有其他键都丢失,即:
{
"posts": {
"key1": "base64XXXXXXX"
},
"execute_time": 123,
"code": 200,
}
This is the desired log output:这是所需的日志 output:
{
"posts": {
"key1": "base64XXXXXXX",
"key2": "abcdge123",
"key3": "abcdge345",
"....": "....",
"something": "something"
},
"execute_time": 123,
"code": 200,
}
Is there any way for this use-case?这个用例有什么办法吗?
Thanks!谢谢!
You need to return the complete posts
object after modification like this:修改后需要返回完整的
posts
object:
posts ${ if record['posts'].has_key?('key1'); record['posts']['key1'] = Base64.strict_encode64(record['posts']['key1'].to_s); record['posts']; end }
In its current form ie:目前的形式即:
posts ${ if record['posts'].has_key?('key1'); Base64.strict_encode64(record['posts']['key1'].to_s); end }
it returns the first object only after modification which is assigned to posts
and that is what you're seeing.它仅在分配给
posts
的修改后返回第一个 object,这就是您所看到的。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.