Logtail分隔字元模式解析外掛程式支援通過分隔字元將日誌內容結構化,解析為多個索引值對形式。
功能入口
當您需要使用Logtail外掛程式處理日誌時,您可以在建立或修改Logtail配置時,添加外掛程式。具體操作,請參見處理外掛程式概述。
配置說明
參數 | 描述 |
原始欄位 | 解析日誌前,用於存放日誌內容的原始欄位,預設值為content。 |
分隔字元 | 請根據您的日誌內容選擇正確的分隔字元,例如豎線(|)。 說明 指定分隔字元為不可見字元時,您需要尋找不可見字元在ASCII碼中對應的十六進位數,輸入的格式為 |
引用符 | 當日誌欄位內容中包含分隔字元時,需要指定引用符進行包裹,被引用符包裹的內容會被Simple Log Service解析為一個完整欄位。請根據您的日誌格式選擇正確的引用符。 說明 指定引用符為不可見字元時,您需要尋找不可見字元在ASCII碼中對應的十六進位數,輸入的格式為 |
日誌抽取欄位 |
Key只能包括字母、數字或底線(_),且只能以字母或底線(_)開頭。最大長度為128位元組。 |
允許部分欄位 | 如果日誌中實際提取出的Value數量少於Key數量,是否上傳日誌到Simple Log Service。選中允許部分欄位表示上傳。 例如日誌為
|
處理超出欄位方式 | 日誌中提取的Value數量大於Key數量時的處理方法。
|
解析失敗時保留原始欄位 | 選中解析失敗時保留原始欄位,則解析失敗時,將保留原始欄位。 |
解析成功時保留原始欄位 | 選中解析成功時保留原始欄位,則解析成功時,將保留原始欄位。 |
重新命名的原始欄位 | 選中解析失敗時保留原始欄位或解析成功時保留原始欄位後,可重新命名原始欄位名,用於存放原始的日誌內容。 |
附錄
Logtail分隔字元模式解析外掛程式支援單字元分隔字元和多字元分隔字元。
單字元
單字元的日誌樣本如下所示。
05/May/2022:13:30:28,10.10.*.*,"POST /PutData?Category=YunOsAccountOpLog&AccessKeyId=****************&Date=Fri%2C%2028%20Jun%202013%2006%3A53%3A30%20GMT&Topic=raw&Signature=******************************** HTTP/1.1",200,18204,aliyun-sdk-java
05/May/2022:13:31:23,10.10.*.*,"POST /PutData?Category=YunOsAccountOpLog&AccessKeyId=****************&Date=Fri%2C%2028%20Jun%202013%2006%3A53%3A30%20GMT&Topic=raw&Signature=******************************** HTTP/1.1",401,23472,aliyun-sdk-java
在單字元模式中,您需要指定分隔字元,也可以同時指定引用符。
分隔字元:通過單字元的分隔字元分割日誌,例如定位字元(\t)、豎線(|)、空格、半形逗號(,)、半形分號(;)和不可見字元等單字元。分隔字元不支援為雙引號(")。
雙引號(")可以作為引用符,在欄位邊界出現,也可以作為欄位內容出現。如果雙引號(")作為欄位內容出現,需要進行轉義,即在日誌中處理為
""
。Simple Log Service解析欄位時會自動還原,將""
還原為"
。例如分隔字元為半形逗號(,),引用符為雙引號("),且日誌欄位內部包含雙引號(")和半形逗號(,),需要將包含半形逗號(,)的日誌欄位用引用符包裹,同時將日誌欄位中的雙引號(")轉義為""
。處理後的日誌格式為:1999,Chevy,"Venture ""Extended Edition, Very Large""","",5000.00
,該日誌可以被解析為5個欄位:1999
、Chevy
、Venture "Extended Edition, Very Large"
、空欄位和5000.00。引用符:日誌欄位內容中包含分隔字元時,需要指定引用符進行包裹,被引用符包裹的內容會被Simple Log Service解析為一個完整欄位。
引用符可以設定為定位字元(\t)、豎線(|)、空格、半形逗號(,)、半形分號(;)和不可見字元等單字元。
例如分隔字元為半形逗號(,),引用符為雙引號("),日誌為
1997,Ford,E350,"ac, abs, moon",3000.00
,該日誌可以被解析為5個欄位:1997
、Ford
、E350
、ac, abs, moon
、3000.00
。
多字元
多字元的日誌樣本如下所示。
05/May/2022:13:30:28&&10.200.**.**&&POST /PutData?Category=YunOsAccountOpLog&AccessKeyId=****************&Date=Fri%2C%2028%20Jun%202013%2006%3A53%3A30%20GMT&Topic=raw&Signature=******************************** HTTP/1.1&&200&&18204&&aliyun-sdk-java
05/May/2022:13:31:23&&10.200.**.**&&POST /PutData?Category=YunOsAccountOpLog&AccessKeyId=****************&Date=Fri%2C%2028%20Jun%202013%2006%3A53%3A30%20GMT&Topic=raw&Signature=******************************** HTTP/1.1&&401&&23472&&aliyun-sdk-java
多字元模式中,分隔字元包括2~3個字元(例如||
、&&&
、^_^
)。日誌解析根據分隔字元進行匹配,您無需使用引用符對日誌欄位進行包裹。
確保日誌欄位內容中不會出現分隔字元的完整匹配,否則會導致欄位誤分割。
例如分隔字元為&&
,日誌為1997&&Ford&&E350&&ac&abs&moon&&3000.00
會被解析為5個欄位:1997
、Ford
、E350
、ac&abs&moon
、3000.00
。