So verfolgen Sie mehrere dynamisch generierte Protokolldateien in einer kombinierten Ansicht

So verfolgen Sie mehrere dynamisch generierte Protokolldateien in einer kombinierten Ansicht

Ich habe ein Verzeichnis mit Protokolldateien, zu dem von Zeit zu Zeit neue Dateien hinzugefügt werden. Ich möchte sie in einer kombinierten Ansicht „tailfen“ (alle Zeilen aus allen Dateien zusammengeführt sehen).

Ich habe gesehen, dass lnav hierfür einige Male empfohlen wurde und der Funktionsbeschreibung zufolge sollte es diese Optionen unterstützen – die Dokumentation ist jedoch nicht klar genug.

Insbesondere - wenn ich lnav ausführe, um ein Verzeichnis zu verfolgen, kann ich mit den Tasten f\F zwischen Protokolldateien wechseln, erhalte aber keine kombinierte Ansicht

Antwort1

Tatsächlich sehe ich keine gute Lösung für Ihr Problem mit lnav. Das Beste, was mir einfällt, ist die Verwendung tail -fauf allen Protokolldateien:

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

Eine andere Lösung, die logtaildies verwendet, hat einige Nachteile, behandelt aber den Fall, dass von Zeit zu Zeit neue Protokolldateien hinzugefügt werden:

#!/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

Antwort2

Sie können eine kombinierte Ansicht der Protokollnachrichten in lnav erhalten, wenn die Dateien Zeitstempel haben und es die Dateiformate versteht. Wenn lnav das Protokolldateiformat nicht versteht, behandelt es die Dateien als einfachen Text. Sie können eine neue Formatdefinition erstellen, wie in derenDokumentation.

verwandte Informationen