
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 -f
auf allen Protokolldateien:
tail -f file_1.log ... file_n.log
Eine andere Lösung, die logtail
dies 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.