文档

分隔符模式解析

更新时间:

Logtail分隔符模式解析插件支持通过分隔符将日志内容结构化,解析为多个键值对形式。

功能入口

当您需要使用Logtail插件处理日志时,您可以在创建或修改Logtail配置时,添加插件。具体操作,请参见概述

配置说明

参数

描述

原始字段

解析日志前,用于存放日志内容的原始字段,默认值为content。

分隔符

请根据您的日志内容选择正确的分隔符,例如竖线(|)。

说明

指定分隔符为不可见字符时,您需要查找不可见字符在ASCII码中对应的十六进制数,输入的格式为0x<不可见字符在ASCII码中对应的十六进制数>。例如ASCII码中排行为1的不可见字符为0x01

引用符

当日志字段内容中包含分隔符时,需要指定引用符进行包裹,被引用符包裹的内容会被日志服务解析为一个完整字段。请根据您的日志格式选择正确的引用符。

说明

指定引用符为不可见字符时,您需要查找不可见字符在ASCII码中对应的十六进制数,输入的格式为0x<不可见字符在ASCII码中对应的十六进制数>。例如ASCII码中排行为1的不可见字符为0x01

日志抽取字段

  • 当您配置了日志样例时,日志服务会根据您输入的日志样例及选择的分隔符提取日志内容,并将其定义为Value,您需要为各个Value指定对应的Key。

  • 当您未配置日志样例时,无Value列表,您需要根据实际日志及分隔符情况,输入对应的Key。

Key只能包括字母、数字或下划线(_),且只能以字母或下划线(_)开头。最大长度为128字节。

允许部分字段

如果日志中实际提取出的Value数量少于Key数量,是否上传日志到日志服务。选中允许部分字段表示上传。

例如日志为11|22|33|44,分隔符为竖线(|),Key为ABCDE

  • 如果选中允许部分字段,则E字段的Value为空,该日志将被上传到日志服务

  • 如果未选中允许部分字段,该日志会被丢弃。

    说明

    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)、竖线(|)、空格、半角逗号(,)、半角分号(;)和不可见字符等单字符。分隔符不支持为双引号(")。

    双引号(")可以作为引用符,在字段边界出现,也可以作为字段内容出现。如果双引号(")作为字段内容出现,需要进行转义,即在日志中处理为""日志服务解析字段时会自动还原,将""还原为"。例如分隔符为半角逗号(,),引用符为双引号("),且日志字段内部包含双引号(")和半角逗号(,),需要将包含半角逗号(,)的日志字段用引用符包裹,同时将日志字段中的双引号(")转义为""。处理后的日志格式为:1999,Chevy,"Venture ""Extended Edition, Very Large""","",5000.00,该日志可以被解析为5个字段:1999ChevyVenture "Extended Edition, Very Large"、空字段和5000.00

  • 引用符:日志字段内容中包含分隔符时,需要指定引用符进行包裹,被引用符包裹的内容会被日志服务解析为一个完整字段。

    引用符可以设置为制表符(\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