文本日志

简介

iuput_file插件可以实现从文本文件中采集日志。采集的日志内容将会保存在事件的content字段中。

版本

Stable

配置参数

  • 表1:多行聚合选项

  • 表2:容器过滤选项

样例

采集指定目录下的文件

采集/home/test-log路径下的所有文件名匹配*.log规则的文件,并将结果输出至stdout。

  • 输入

{"key1": 123456, "key2": "abcd"}
  • 采集配置

enable: true
inputs:
  - Type: input_file
    FilePaths: 
      - /home/test-log/*.log
flushers:
  - Type: flusher_stdout
    OnlyStdout: true
    Tags: true
  • 输出

{
    "__tag__:__path__": "/home/test-log/json.log",
    "content": "{\"key1\": 123456, \"key2\": \"abcd\"}",
    "__time__": "1657354763"
}

注意:__tag__ 字段的输出会由于ilogtail版本的不同而存在差别。为了在标准输出中能够准确地观察到 __tag__,建议仔细检查以下几点:

  • flusher_stdout 的配置中,设置了 Tags: true

  • 如果使用了较新版本的ilogtail,在观察标准输出时,__tag__可能会被拆分为一行单独的信息,先于日志的内容输出(这与文档中的示例输出会有差别),请注意不要观察遗漏。

此注意事项适用于后文所有观察 __tag__ 字段输出的地方。

采集指定目录下的所有文件

采集/home/test-log路径下的所有文件名匹配*.log规则的文件(含递归),并将结果输出至stdout。

  • 采集配置

enable: true
inputs:
  - Type: input_file
    FilePaths: 
      - /home/test-log/**/*.log
    MaxDirSearchDepth: 10
flushers:
  - Type: flusher_stdout
    OnlyStdout: true
    Tags: true

采集K8s容器文件(仅限iLogtail以Daemonset的方式部署)

采集K8s命名空间default中以deploy为Pod名前缀、Pod标签包含version: 1.0且容器环境变量不为ID=123的所有容器中,/home/test-log/路径下的所有文件名匹配*.log规则的文件,并将结果输出至stdout。

  • 采集配置

enable: true
inputs:
  - Type: input_file
    FilePaths: 
      - /home/test-log/*.log
    EnableContainerDiscovery: true
    ContainerFilters:
      K8sNamespaceRegex: default
      K8sPodRegex: ^(deploy.*)$
      IncludeK8sLabel:
        version: v1.0
      ExcludeEnv:
        ID: 123
flushers:
  - Type: flusher_stdout
    OnlyStdout: true
    Tags: true

采集简单多行日志

采集文件/home/test-log/regMulti.log,文件内容通过行首正则表达式切分日志,然后通过正则表达式解析日志内容并提取字段,并将结果输出到stdout。

  • 输入

[2022-07-07T10:43:27.360266763] [INFO] java.lang.Exception: exception happened
    at com.aliyun.sls.devops.logGenerator.type.RegexMultiLog.f2(RegexMultiLog.java:108)
    at java.base/java.lang.Thread.run(Thread.java:833)
  • 采集配置

enable: true
inputs:
  - Type: input_file
    FilePaths: 
      - /home/test-log/regMulti.log
    Multiline:
      StartPattern: \[\d+-\d+-\w+:\d+:\d+.\d+]\s\[\w+]\s.*
processors:
  - Type: processor_parse_regex_native
    SourceKey: content
    Keys:
      - time
      - level
      - msg
    Regex: \[(\S+)]\s\[(\S+)]\s(.*)
flushers:
  - Type: flusher_stdout
    OnlyStdout: true
    Tags: true
  • 输出

{
    "__tag__:__path__": "/home/test-log/regMulti.log",
    "time": "2022-07-07T10:43:27.360266763",
    "level": "INFO",
    "msg": "java.lang.Exception: exception happened
    at com.aliyun.sls.devops.logGenerator.type.RegexMultiLog.f2(RegexMultiLog.java:108)
    at java.base/java.lang.Thread.run(Thread.java:833)",
    "__time__": "1657161807"
}

采集复杂多行日志

采集文件/home/test-log/regMulti.log,文件内容通过行首和行尾正则表达式切分日志,然后通过正则表达式解析日志内容并提取字段,并将结果输出到stdout。

  • 输入

[2022-07-07T10:43:27.360266763] [ERROR] java.lang.Exception: exception happened
[2022-07-07T10:43:27.360266763]    at com.aliyun.sls.devops.logGenerator.type.RegexMultiLog.f2(RegexMultiLog.java:108)
[2022-07-07T10:43:27.360266763]    at java.base/java.lang.Thread.run(Thread.java:833)
[2022-07-07T10:43:27.360266763]    ... 23 more
[2022-07-07T10:43:27.360266763] Some user custom log
[2022-07-07T10:43:27.360266763] Some user custom log
[2022-07-07T10:43:27.360266763] [ERROR] java.lang.Exception: exception happened
  • 采集配置

enable: true
inputs:
  - Type: input_file
    FilePaths: 
      - /home/test-log/regMulti.log
    Multiline:
      StartPattern: \[\d+-\d+-\w+:\d+:\d+.\d+].*Exception.*
      EndPattern: .*\.\.\. \d+ more
processors:
  - Type: processor_parse_regex_native
    SourceKey: content
    Keys:
      - msg
      - time
    Regex: (\[(\S+)].*)
flushers:
  - Type: flusher_stdout
    OnlyStdout: true
    Tags: true
  • 输出

{
    "__tag__:__path__": "/home/test-log/regMulti.log",
    "time": "2022-07-07T10:43:27.360266763",
    "msg": "[2022-07-07T10:43:27.360266763] [ERROR] java.lang.Exception: exception happened\n[2022-07-07T10:43:27.360266763]    at com.aliyun.sls.devops.logGenerator.type.RegexMultiLog.f2(RegexMultiLog.java:108)\n[2022-07-07T10:43:27.360266763]    at java.base/java.lang.Thread.run(Thread.java:833)\n[2022-07-07T10:43:27.360266763]    ... 23 more"
}
{
    "__tag__:__path__": "/home/test-log/regMulti.log",
    "time": "2022-07-07T10:43:27.360266763",
    "msg": "[2022-07-07T10:43:27.360266763] Some user custom log"
}
{
    "__tag__:__path__": "/home/test-log/regMulti.log",
    "time": "2022-07-07T10:43:27.360266763",
    "msg": "[2022-07-07T10:43:27.360266763] Some user custom log"
}

Last updated