如何在组合视图中跟踪动态生成的多个日志文件

如何在组合视图中跟踪动态生成的多个日志文件

我有一个包含日志文件的目录,不时会添加新文件。我想在组合视图中“tailf”它们(查看合并在一起的所有文件的所有行)

我看到 lnav 对此进行了几次推荐,并且根据功能描述,它应该支持这些选项 - 但文档不够清晰。

具体来说 - 当运行 lnav 来跟踪目录时,我可以使用 f\F 键切换日志文件,但无法获得组合视图

答案1

确实,我没有看到任何适合您需要的好的解决方案lnav。我能想到的最好的方法是tail -f在所有日志文件上使用:

tail -f file_1.log ... file_n.log

另一个解决方案logtail也有一些缺点,但可以处理不时添加新日志文件的情况:

#!/bin/bash

# Quietly initialize logtail offset files
for logfile in *log
do
    logtail $logfile
done > /dev/null


while :
do
    # wait a second for new logs
    sleep 1
    for logfile in *log
    do  
        # output new logs since last logtail run, prepend with log filename
        logtail $logfile | sed "s/^/$logfile: /"
    done
done

答案2

如果文件有时间戳并且 lnav 理解文件格式,则可以在 lnav 中获取日志消息的组合视图。如果 lnav 不理解日志文件格式,它会将文件视为纯文本。您可以按照其文档

相关内容