本文介紹如何將日志分發到不同存儲目標,并且每次輸出的日志字段集合不同。
背景信息
如果您需要將日志重復輸出到多個目標中,但輸出到每個目標的字段集合有所不同。例如,原始日志的字段為f1、f2、f3、f4、f5。
輸出到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字段將日志分成兩份,分別帶有字段
tag: target1
和tag: target2
。對于帶有字段
tag: target1
的日志,丟棄f1、f2字段,只有f3、f4、f5字段輸出到target1
。用e_output
函數輸出后,帶有字段tag: target1
的日志不再執行后面的加工規則。對于帶有字段
tag: target2
的日志,丟棄f3、f4字段。
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的結果滿足需求,但target1的結果會直接輸入到target2,導致target2的日志丟失f1、f2字段。
e_drop_fields("f1", "f2", regex=False)
e_coutput("target1")
e_drop_fields("f3", "f4", regex=False)
e_output("target2")
文檔內容是否對您有幫助?