使用record_transformer插件修改fluentd json
我有这样的日志:使用record_transformer插件修改fluentd json,json,fluentd,Json,Fluentd,我有这样的日志: { "posts": { "key1": "value123", "key2": "abcdge123", "key3": "abcdge345", "....": "....", "something&
{
"posts": {
"key1": "value123",
"key2": "abcdge123",
"key3": "abcdge345",
"....": "....",
"something": "something"
},
"execute_time": 123,
"code": 200,
}
posts ${ if record['posts'].has_key?('key1'); record['posts']['key1'] = Base64.strict_encode64(record['posts']['key1'].to_s); record['posts']; end }
以下是记录变压器的fluentd配置:
<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": {
"key1": "base64XXXXXXX",
"key2": "abcdge123",
"key3": "abcdge345",
"....": "....",
"something": "something"
},
"execute_time": 123,
"code": 200,
}
这个用例有什么方法吗
谢谢 修改后需要返回完整的posts
对象,如下所示:
{
"posts": {
"key1": "value123",
"key2": "abcdge123",
"key3": "abcdge345",
"....": "....",
"something": "something"
},
"execute_time": 123,
"code": 200,
}
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
,这就是您看到的。尝试:posts${if record['posts'].has_key?('key1');record['posts']['key1']=Base64.strict_encode64(record['posts']['key1'])to_s);record['posts'];end}
@Azeem它工作了。非常感谢不客气!很高兴它有帮助!