我有这样的日志:
{
"posts": {
"key1": "value123",
"key2": "abcdge123",
"key3": "abcdge345",
"....": "....",
"something": "something"
},
"execute_time": 123,
"code": 200,
}
这是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>
这将删除posts
字段并重新创建,以使posts
字段中的所有其他键都丢失,即:
{
"posts": {
"key1": "base64XXXXXXX"
},
"execute_time": 123,
"code": 200,
}
这是所需的日志输出:
{
"posts": {
"key1": "base64XXXXXXX",
"key2": "abcdge123",
"key3": "abcdge345",
"....": "....",
"something": "something"
},
"execute_time": 123,
"code": 200,
}
这个用例有什么办法吗?
谢谢!
答案 0 :(得分:0)
修改后,您需要返回完整的posts
对象:
posts ${ if record['posts'].has_key?('key1'); record['posts']['key1'] = Base64.strict_encode64(record['posts']['key1'].to_s); record['posts']; end }
当前格式,即:
posts ${ if record['posts'].has_key?('key1'); Base64.strict_encode64(record['posts']['key1'].to_s); end }
仅在修改后返回分配给posts
的第一个对象,这就是您所看到的。