Skip to content

Latest commit

 

History

History
99 lines (83 loc) · 4.62 KB

File metadata and controls

99 lines (83 loc) · 4.62 KB

分隔符

简介

processor_split_char processor插件可以通过单字符的分隔符提取字段,该方式支持使用引用符对分隔符进行包裹。

processor_split_string processor插件可以通过多字符的分隔符提取字段,该方式不支持使用引用符对分隔符进行包裹。

配置参数

processor_split_char配置

参数 类型 是否必选 说明
Type String 插件类型
SourceKey String 原始字段名
SplitSep String 分隔符。必须为单字符,可设置为不可见字符,例如\u0001。
SplitKeys String数组 分割日志后设置的字段名,例如["ip", "time", "method"]。
QuoteFlag Boolean 是否使用引用符。如果未添加该参数,则默认使用false,表示不使用。
Quote String 仅当QuoteFlag配置为true时有效。
NoKeyError Boolean 无匹配的原始字段时是否报错。如果未添加该参数,则默认使用false,表示不报错。
NoMatchError Boolean 分隔符不匹配时是否报错。如果未添加该参数,则默认使用false,表示不报错。
KeepSource Boolean 是否保留原始字段。如果未添加该参数,则默认使用false,表示不保留。

processor_split_string配置

参数 类型 是否必选 说明
Type String 插件类型
SourceKey String 原始字段名
SplitSep String 分隔符。可以设置不可见字符,例如\u0001\u0002。
SplitKeys String数组 分割日志后设置的字段名,例如["ip", "time", "method"]。
PreserveOthers Boolean 如果待分割的字段长度大于SplitKeys参数中的字段长度时是否保留超出部分。如果未添加该参数,则默认使用false,表示不保留。
ExpandOthers Boolean 是否解析超出部分。如果未添加该参数,则默认使用false,表示不继续解析。
ExpandKeyPrefix String 超出部分的命名前缀。例如配置expand_,则Key为expand_1、expand_2。
NoKeyError Boolean 无匹配的原始字段时是否报错。如果未添加该参数,则默认使用false,表示不报错。
NoMatchError Boolean 分隔符不匹配时是否报错。如果未添加该参数,则默认使用false,表示不报错。
KeepSource Boolean 是否保留原始字段。如果未添加该参数,则默认使用false,表示不保留。

样例

采集/home/test-log/路径下的delimiter.log文件,使用竖线(|)分隔符提取日志的字段值。

  • 输入
echo "127.0.0.1|10/Aug/2017:14:57:51 +0800|POST|PutData?Category=YunOsAccountOpLog|0.024|18204|200|37|-|aliyun-sdk-java" >> /home/test-log/delimiter.log
  • 采集配置
enable: true
inputs:
  - Type: file_log
    LogPath: /home/test-log/
    FilePattern: delimiter.log
processors:
  - Type: processor_split_char
    SourceKey: content
    SplitSep: "|"
    SplitKeys:
      - ip
      - time
      - method
      - url
      - request_time
      - request_length
      - status
      - length
      - ref_url
      - browser
flushers:
  - Type: flusher_sls
    Endpoint: cn-xxx.log.aliyuncs.com
    ProjectName: test_project
    LogstoreName: test_logstore
  - Type: flusher_stdout
    OnlyStdout: true
  • 输出
{
    "__tag__:__path__": "/home/test-log/delimiter.log",
    "ip": "127.0.0.1",
    "time": "10/Aug/2017:14:57:51 +0800",
    "method": "POST",
    "url": "PutData?Category=YunOsAccountOpLog",
    "request_time": "0.024",
    "request_length": "18204",
    "status": "200",
    "length": "37",
    "ref_url": "-",
    "browser": "aliyun-sdk-java",
    "__time__": "1657361070"
}