本文介绍如何将一条日志分发到不同目标,其中每次输出的日志字段集合不同。

如果您需要将日志重复输出到多个目标中,但输出到每个目标的字段集合有所不同。例如日志字段为f1、f2、f3、f4、f5,输出到2个目标中(target1和target2)。输出到target1时,去掉字段f1和f2,保留其他字段。输出到target2时,去掉字段f3和f4,保留其他字段。参考示例如下所示。
  • 原始日志
    __time__ : 1591754815
    f1: GET
    f2: https
    f3: aliyun
    f4: 200
    f5: standard
  • 加工语法
    e_set("tag", "target1, target2")
    e_split("tag")
    e_if(e_search("tag==target1"), e_compose(e_drop_fields("f1", "f2", regex=False), e_output("target1")))
    e_drop_fields("f3", "f4", regex=False)
    e_output("target2")
  • 输出日志
    • 输出到目标target1
      __time__ : 1591754815
      f3: aliyun
      f4: 200
      f5: standard
    • 输出到目标target2
      __time__ : 1591754815
      f1: GET
      f2: https
      f5: standard
错误示例:如果您使用如下加工语法,则输出到target1时满足需求,但输出到target2时,字段f1、f2会丢失。
e_drop_fields("f1", "f2", regex=False)
e_coutput("target1")
e_drop_fields("f3", "f4", regex=False)
e_output("target2")