Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用record_transformer插件修改fluentd json_Json_Fluentd - Fatal编程技术网

使用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它工作了。非常感谢不客气!很高兴它有帮助!