全部產品
Search
文件中心

Simple Log Service:如何將同一份日誌輸出到不同儲存目標?

更新時間:Jun 30, 2024

本文介紹如何將日誌分發到不同儲存目標,並且每次輸出的日誌欄位集合不同。

背景資訊

如果您需要將日誌重複輸出到多個目標中,但輸出到每個目標的欄位集合有所不同。例如,原始日誌的欄位為f1、f2、f3、f4、f5。

  • 輸出到target1時,去掉欄位f1和f2,保留其他欄位。

  • 輸出到target2時,去掉欄位f3和f4,保留其他欄位。

配置樣本

原始日誌

__time__ : 1591754815
f1: GET
f2: https
f3: aliyun
f4: 200
f5: standard

加工文法

說明

以下樣本涉及的資料加工函數,請參見函數總覽

  1. 用e_set函數為日誌新增欄位tag: target1, target2

  2. 用e_split函數根據tag欄位將日誌分成兩份,分別帶有欄位tag: target1tag: target2

  3. 對於帶有欄位tag: target1的日誌,丟棄f1、f2欄位,只有f3、f4、f5欄位輸出到target1。用e_output函數輸出後,帶有欄位tag: target1的日誌不再執行後面的加工規則。

  4. 對於帶有欄位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")