全部產品
Search
文件中心

Simple Log Service:分隔字元模式解析

更新時間:Jun 30, 2024

Logtail分隔字元模式解析外掛程式支援通過分隔字元將日誌內容結構化,解析為多個索引值對形式。

功能入口

當您需要使用Logtail外掛程式處理日誌時,您可以在建立或修改Logtail配置時,添加外掛程式。具體操作,請參見處理外掛程式概述

配置說明

參數

描述

原始欄位

解析日誌前,用於存放日誌內容的原始欄位,預設值為content。

分隔字元

請根據您的日誌內容選擇正確的分隔字元,例如豎線(|)。

說明

指定分隔字元為不可見字元時,您需要尋找不可見字元在ASCII碼中對應的十六進位數,輸入的格式為0x<不可見字元在ASCII碼中對應的十六進位數>。例如ASCII碼中排行為1的不可見字元為0x01

引用符

當日誌欄位內容中包含分隔字元時,需要指定引用符進行包裹,被引用符包裹的內容會被Simple Log Service解析為一個完整欄位。請根據您的日誌格式選擇正確的引用符。

說明

指定引用符為不可見字元時,您需要尋找不可見字元在ASCII碼中對應的十六進位數,輸入的格式為0x<不可見字元在ASCII碼中對應的十六進位數>。例如ASCII碼中排行為1的不可見字元為0x01

日誌抽取欄位

  • 當您配置了日誌範例時,Simple Log Service會根據您輸入的日誌範例及選擇的分隔字元提取日誌內容,並將其定義為Value,您需要為各個Value指定對應的Key。

  • 當您未配置日誌範例時,無Value列表,您需要根據實際日誌及分隔字元情況,輸入對應的Key。

Key只能包括字母、數字或底線(_),且只能以字母或底線(_)開頭。最大長度為128位元組。

允許部分欄位

如果日誌中實際提取出的Value數量少於Key數量,是否上傳日誌到Simple Log Service。選中允許部分欄位表示上傳。

例如日誌為11|22|33|44,分隔字元為豎線(|),Key為ABCDE

  • 如果選中允許部分欄位,則E欄位的Value為空白,該日誌將被上傳到Simple Log Service

  • 如果未選中允許部分欄位,該日誌會被丟棄。

    說明

    Linux Logtail 1.0.28及以上版本或Window Logtail 1.0.28.0及以上版本支援配置分隔字元模式的允許部分欄位參數。

處理超出欄位方式

日誌中提取的Value數量大於Key數量時的處理方法。

  • 展開:保留多餘的Value內容,分別添加到__column$i__格式的欄位中,其中$i代表多餘欄位序號,從0開始計數。例如__column0____column1__

  • 保留:保留多餘的Value內容,並整體添加到名為__column0__的欄位中。

  • 丟棄:丟棄多餘的Value內容。

解析失敗時保留原始欄位

選中解析失敗時保留原始欄位,則解析失敗時,將保留原始欄位。

解析成功時保留原始欄位

選中解析成功時保留原始欄位,則解析成功時,將保留原始欄位。

重新命名的原始欄位

選中解析失敗時保留原始欄位解析成功時保留原始欄位後,可重新命名原始欄位名,用於存放原始的日誌內容。

附錄

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個欄位:1999ChevyVenture "Extended Edition, Very Large"、空欄位和5000.00

  • 引用符:日誌欄位內容中包含分隔字元時,需要指定引用符進行包裹,被引用符包裹的內容會被Simple Log Service解析為一個完整欄位。

    引用符可以設定為定位字元(\t)、豎線(|)、空格、半形逗號(,)、半形分號(;)和不可見字元等單字元。

    例如分隔字元為半形逗號(,),引用符為雙引號("),日誌為1997,Ford,E350,"ac, abs, moon",3000.00,該日誌可以被解析為5個欄位:1997FordE350ac, abs, moon3000.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個欄位:1997FordE350ac&abs&moon3000.00