本文介绍文件中的日志被采集多份的解决方案。

默认情况下,一个文件只能匹配一个Logtail配置。当多个Logtail配置匹配同一个文件时,只会生效1个。因为在客户端上对文件中的日志采集多份需要消耗多倍的CPU、内存、磁盘IO和网络IO开销,将对同机部署的其他服务性能造成额外影响,并非优化的日志采集方案。

一份日志需要被存储到不同Logstore时,您可以使用日志服务数据加工功能。通过数据加工对日志进行复制,可避免对同机的其他服务性能造成影响。具体操作,请参见复制Logstore数据

如果您的需求是必须在客户端上对文件中的日志采集多份,则可以使用如下三种方案。
  • 创建目录软链接

    为文件所在的目录创建软链接。例如/home/log/nginx/log/log.log文件中的日志需要被采集两份,则执行如下命令创建该文件所在目录的软链接。在一个Logtail配置中使用原路径,在另一个Logtail配置中使用软链接路径。

    ln -s /home/log/nginx/log /home/log/nginx/link_log
  • 添加强制采集配置
    在Logtail采集配置的 高级选项 > 扩展配置中添加 {"force_multiconfig": true},实现目标文件可被多个Logtail配置匹配,从而实现目标文件中的日志被采集多份。 logtail
  • 设置启动参数

    在安装Logtail的服务器上,打开/usr/local/ilogtail/ilogtail_config.json文件,设置"accept_multi_config": true,允许多个Logtail配置采集同一个文件中的日志。更多信息,请参见设置Logtail启动参数