For the complete documentation index, see llms.txt. This page is also available as Markdown.

文本日志

简介

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

事件能力

列含义见 概览 · 事件能力列说明

Log
Metric
Span

版本

Stable

版本说明

  • 推荐版本:iLogtail v1.0.27 及以上

配置参数

参数

类型

是否必填

默认值

说明

Type

string

/

插件类型。固定为input_file。

FilePaths

[]string

/

待采集的日志文件路径列表(目前仅限1个路径)。路径中支持使用*和**通配符,其中**通配符仅能出现一次且仅限用于文件名前。

MaxDirSearchDepth

int

0

文件路径中**通配符匹配的最大目录深度。仅当日志路径中存在**通配符时有效,取值范围为0~1000。

MaxCheckpointDirSearchDepth

uint

0

还原检查点时如果文件已被移动,找回文件的最大目录搜索深度。

ExcludeFilePaths

[]string

文件路径黑名单。路径必须为绝对路径,支持使用*通配符。

ExcludeFiles

[]string

文件名黑名单。支持使用*通配符。

ExcludeDirs

[]string

目录黑名单。路径必须为绝对路径,支持使用*通配符

FileEncoding

string

utf8

文件编码格式。可选值包括utf8和gbk。

TailSizeKB

uint

1024

配置首次生效时,匹配文件的起始采集位置距离文件结尾的大小。如果文件大小小于该值,则从头开始采集,取值范围为0~10485760KB。

Multiline

object

多行聚合选项。详见表1。

EnableContainerDiscovery

bool

false

是否启用容器发现功能。仅当 LoongCollector 以 DaemonSet 模式运行,且采集文件路径为容器内路径时有效。

ContainerFilters

object

容器过滤选项。多个选项之间为“且”的关系,仅当EnableContainerDiscovery取值为true时有效,详见表2。

ExternalK8sLabelTag

map[string]string

对于部署于K8s环境的容器,需要在日志中额外添加的与Pod标签相关的tag。map中的key为Pod标签名,value为对应的tag名。 例如:在map中添加app: k8s_label_app,则若pod中包含app=serviceA的标签时,会将该信息以tag的形式添加到日志中,即添加字段__tag__:k8s_label_app: serviceA;若不包含app标签,则会添加空字段__tag__:k8s_label_app:

ExternalEnvTag

map[string]string

对于部署于K8s环境的容器,需要在日志中额外添加的与容器环境变量相关的tag。map中的key为环境变量名,value为对应的tag名。 例如:在map中添加VERSION: env_version,则当容器中包含环境变量VERSION=v1.0.0时,会将该信息以tag的形式添加到日志中,即添加字段__tag__:env_version: v1.0.0;若不包含VERSION环境变量,则会添加空字段__tag__:env_version:

AppendingLogPositionMeta

bool

false

是否在日志中添加该条日志所属文件的元信息,包括__tag__:__inode__字段和__file_offset__字段。

FlushTimeoutSecs

uint

60

当文件超过指定时间未出现新的完整日志行时,将当前读取缓存中的内容作为一条数据输出。

EnableExactlyOnce

uint

0

**实验功能!**Exactly Once 并发度(>0 启用 Exactly Once 处理与提交保障)。

AllowingIncludedByMultiConfigs

bool

false

是否允许当前配置采集其它配置已匹配的文件。

FileOffsetKey

string

log.file.offset

用于指定日志文件偏移量的字段名。

Tags

map[string]string

重命名或删除tag。map中的key为原tag名,value为新tag名。若value为空,则删除原tag。若value为__default__,则使用默认值。支持配置的Tag名和默认值参照后文的表3。

  • 表1:多行聚合选项

参数

类型

是否必填

默认值

说明

Mode

string

custom

多行聚合模式。可选值包括custom、JSON和whole_file。其中whole_file表示将整个文件作为一条日志记录采集。

StartPattern

string

当Multiline.Mode取值为custom时,至少1个必填

行首正则表达式。

ContinuePattern

string

行继续正则表达式。

EndPattern

string

行尾正则表达式。

FileWriteMode

string

append

文件写入模式,仅当Multiline.Mode为whole_file时生效。可选值包括append和overwrite:

  • append:文件以追加方式写入;

  • overwrite:文件被整体改写(原地truncate后重写),此时从头重新读取整个文件。

MaxWholeFileBytes

uint

10485760

整文件采集时允许的最大文件字节数,仅当Multiline.Mode为whole_file时生效,默认10MB。当文件大小超过该上限时将被跳过不采集。

UnmatchedContentTreatment

string

single_line

对于无法匹配的日志段的处理方式,可选值如下:

  • discard:丢弃

  • single_line:将不匹配日志段的每一行各自存放在一个单独的事件中

  • 表2:容器过滤选项

参数

类型

是否必填

默认值

说明

K8sNamespaceRegex

string

对于部署于K8s环境的容器,指定待采集容器所在Pod所属的命名空间条件。如果未添加该参数,则表示采集所有容器。支持正则匹配。

K8sPodRegex

string

对于部署于K8s环境的容器,指定待采集容器所在Pod的名称条件。如果未添加该参数,则表示采集所有容器。支持正则匹配。

IncludeK8sLabel

map[string]string

对于部署于K8s环境的容器,指定待采集容器所在pod的标签条件。多个条件之间为“或”的关系,如果未添加该参数,则表示采集所有容器。支持正则匹配。 map中的key为Pod标签名,value为Pod标签的值,说明如下:

  • 如果map中的value为空,则pod标签中包含以key为键的pod都会被匹配;

  • 如果map中的value不为空,则:

    • 若value以^开头并且以$结尾,则当pod标签中存在以key为标签名且对应标签值能正则匹配value的情况时,相应的pod会被匹配;

    • 其他情况下,当pod标签中存在以key为标签名且以value为标签值的情况时,相应的pod会被匹配。

ExcludeK8sLabel

map[string]string

对于部署于K8s环境的容器,指定需要排除采集容器所在pod的标签条件。多个条件之间为“或”的关系,如果未添加该参数,则表示采集所有容器。支持正则匹配。 map中的key为pod标签名,value为pod标签的值,说明如下:

  • 如果map中的value为空,则pod标签中包含以key为键的pod都会被匹配;

  • 如果map中的value不为空,则:

    • 若value以^开头并且以$结尾,则当pod标签中存在以key为标签名且对应标签值能正则匹配value的情况时,相应的pod会被匹配;

    • 其他情况下,当pod标签中存在以key为标签名且以value为标签值的情况时,相应的pod会被匹配。

K8sContainerRegex

string

对于部署于K8s环境的容器,指定待采集容器的名称条件。如果未添加该参数,则表示采集所有容器。支持正则匹配。

IncludeEnv

map[string]string

指定待采集容器的环境变量条件。多个条件之间为“或”的关系,如果未添加该参数,则表示采集所有容器。支持正则匹配。 map中的key为环境变量名,value为环境变量的值,说明如下:

  • 如果map中的value为空,则容器环境变量中包含以key为键的容器都会被匹配;

  • 如果map中的value不为空,则:

    • 若value以^开头并且以$结尾,则当容器环境变量中存在以key为环境变量名且对应环境变量值能正则匹配value的情况时,相应的容器会被匹配;

    • 其他情况下,当容器环境变量中存在以key为环境变量名且以value为环境变量值的情况时,相应的容器会被匹配。

ExcludeEnv

map[string]string

指定需要排除采集容器的环境变量条件。多个条件之间为“或”的关系,如果未添加该参数,则表示采集所有容器。支持正则匹配。 map中的key为环境变量名,value为环境变量的值,说明如下:

  • 如果map中的value为空,则容器环境变量中包含以key为键的容器都会被匹配;

  • 如果map中的value不为空,则:

    • 若value以^开头并且以$结尾,则当容器环境变量中存在以key为环境变量名且对应环境变量值能正则匹配value的情况时,相应的容器会被匹配;

    • 其他情况下,当容器环境变量中存在以key为环境变量名且以value为环境变量值的情况时,相应的容器会被匹配。

IncludeContainerLabel

map[string]string

指定待采集容器的标签条件。多个条件之间为“或”的关系,如果未添加该参数,则默认为空,表示采集所有容器。支持正则匹配。 map中的key为容器标签名,value为容器标签的值,说明如下:

  • 如果map中的value为空,则容器标签中包含以key为键的容器都会被匹配;

  • 如果map中的value不为空,则:

    • 若value以^开头并且以$结尾,则当容器标签中存在以key为标签名且对应标签值能正则匹配value的情况时,相应的容器会被匹配;

    • 其他情况下,当容器标签中存在以key为标签名且以value为标签值的情况时,相应的容器会被匹配。

ExcludeContainerLabel

map[string]string

指定需要排除采集容器的标签条件。多个条件之间为“或”的关系,如果未添加该参数,则默认为空,表示采集所有容器。支持正则匹配。 map中的key为容器标签名,value为容器标签的值,说明如下:

  • 如果map中的value为空,则容器标签中包含以key为键的容器都会被匹配;

  • 如果map中的value不为空,则:

    • 若value以^开头并且以$结尾,则当容器标签中存在以key为标签名且对应标签值能正则匹配value的情况时,相应的容器会被匹配;

    • 其他情况下,当容器标签中存在以key为标签名且以value为标签值的情况时,相应的容器会被匹配。

  • 表3:Tag配置项以及默认值 | 配置项 | 是否默认添加 | 默认值 | | --- | --- | --- | | FileInodeTagKey | 否 | file_offset | | FilePathTagKey | 是 | path | | K8sNamespaceTagKey | 是(当EnableContainerDiscovery为true时) | namespace | | K8sPodNameTagKey | 是(当EnableContainerDiscovery为true时) | pod_name | | K8sPodUidTagKey | 是(当EnableContainerDiscovery为true时) | pod_uid | | ContainerNameTagKey | 是(当EnableContainerDiscovery为true时) | container_name | | ContainerIpTagKey | 是(当EnableContainerDiscovery为true时) | container_ip | | ContainerImageTagKey | 是(当EnableContainerDiscovery为true时) | image_name |

样例

采集指定目录下的文件

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

  • 输入

  • 采集配置

  • 输出

注意:__tag__ 字段的输出会因 LoongCollector / 兼容的旧版 iLogtail 具体版本与输出路径而有所差别。为了在标准输出中能够准确地观察到 __tag__,建议仔细检查以下几点:

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

  • 若使用较新版本 Agent,在观察标准输出时,__tag__ 可能会被拆分为一行单独的信息,先于日志正文输出(与本文示例可能不一致),请勿遗漏。

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

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

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

  • 采集配置

采集 K8s 容器文件(仅限以 DaemonSet 部署的 LoongCollector / 容器采集场景)

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

  • 采集配置

采集简单多行日志

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

  • 输入

  • 采集配置

  • 输出

采集复杂多行日志

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

  • 输入

  • 采集配置

  • 输出

Last updated