Logtail分隔符模式解析插件支持通过分隔符将日志内容结构化,解析为多个键值对形式。
功能入口
当您需要使用Logtail插件处理日志时,您可以在创建或修改Logtail配置时,添加插件。具体操作,请参见概述。
配置说明
参数 | 描述 |
原始字段 | 解析日志前,用于存放日志内容的原始字段,默认值为content。 |
分隔符 | 请根据您的日志内容选择正确的分隔符,例如竖线(|)。 说明 指定分隔符为不可见字符时,您需要查找不可见字符在ASCII码中对应的十六进制数,输入的格式为 |
引用符 | 当日志字段内容中包含分隔符时,需要指定引用符进行包裹,被引用符包裹的内容会被日志服务解析为一个完整字段。请根据您的日志格式选择正确的引用符。 说明 指定引用符为不可见字符时,您需要查找不可见字符在ASCII码中对应的十六进制数,输入的格式为 |
日志抽取字段 |
Key只能包括字母、数字或下划线(_),且只能以字母或下划线(_)开头。最大长度为128字节。 |
允许部分字段 | 如果日志中实际提取出的Value数量少于Key数量,是否上传日志到日志服务。选中允许部分字段表示上传。 例如日志为
|
处理超出字段方式 | 日志中提取的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)、竖线(|)、空格、半角逗号(,)、半角分号(;)和不可见字符等单字符。分隔符不支持为双引号(")。
双引号(")可以作为引用符,在字段边界出现,也可以作为字段内容出现。如果双引号(")作为字段内容出现,需要进行转义,即在日志中处理为
""
。日志服务解析字段时会自动还原,将""
还原为"
。例如分隔符为半角逗号(,),引用符为双引号("),且日志字段内部包含双引号(")和半角逗号(,),需要将包含半角逗号(,)的日志字段用引用符包裹,同时将日志字段中的双引号(")转义为""
。处理后的日志格式为:1999,Chevy,"Venture ""Extended Edition, Very Large""","",5000.00
,该日志可以被解析为5个字段:1999
、Chevy
、Venture "Extended Edition, Very Large"
、空字段和5000.00。引用符:日志字段内容中包含分隔符时,需要指定引用符进行包裹,被引用符包裹的内容会被日志服务解析为一个完整字段。
引用符可以设置为制表符(\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
。