如何在組合視圖中追蹤動態生成的多個日誌文件

如何在組合視圖中追蹤動態生成的多個日誌文件

我有一個包含日誌文件的目錄,並且不時添加新文件。我想在組合視圖中“尾部”它們(查看合併在一起的所有文件中的所有行)

我看到 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 不理解日誌檔案格式,它會將檔案視為純文字。您可以建立新的格式定義,如其中所述文件

相關內容