Wie kann ich Protokolldateien unter Linux anzeigen und beim Anzeigen benutzerdefinierte Filer anwenden?

7

(Ich habe diese Frage zum Stackoverflow gestellt, aber hier ist es vielleicht besser ...)

Ich muss einige gigantische Protokolldateien auf einem Linux-System durchlesen. Es gibt viel Unordnung in den Protokollen. Im Moment mache ich so etwas:

cat logfile.txt | grep -v "IgnoreThis\|IgnoreThat" | less

Aber es ist umständlich - jedes Mal, wenn ich einen weiteren Filter hinzufügen möchte, muss ich lessdie Befehlszeile beenden und bearbeiten. Einige der Filter sind relativ kompliziert und können mehrzeilig sein.

Ich möchte eine Möglichkeit haben, Filter beim Lesen des Protokolls anzuwenden und diese Filter irgendwo zu speichern.

Gibt es ein Tool, das dies für mich tun kann? Ich kann keine neue Software installieren, also ist es hoffentlich etwas, das bereits installiert ist - z. B. weniger, vi, etwas in einer Python- oder Perl-Bibliothek usw.

Das Ändern des Codes, der das Protokoll generiert, um weniger zu generieren, ist keine Option.

Dan
quelle
Dan, muss es ein Tool sein, das über die Befehlszeile funktioniert?
William
@ William: Nein, aber das wäre vorzuziehen. Mein größtes Kriterium ist, dass es etwas ist, das ich bereits installiert habe - natürlich können Sie nicht wissen, dass ... Ich hatte gehofft, dass dies auf irgendeine Weise vimöglich ist. Jemand hat Multitail auf SO vorgeschlagen, sieht gut aus, aber ich habe es nicht installiert.
Dan

Antworten:

2
  1. Das Lesen großer Protokolldateien ist keine gute Idee
    • Sie müssen sie zuerst nach den erforderlichen Zeilen filtern und dann betrachten
    • Selbst dann, wenn möglich (und wenn die gefilterten Zeilen auch viel sind),
      sollten Sie sekundäre Filter ausführen und Skripte zählen, um sie zu analysieren
  2. Wenn Sie eine große statische Datei haben und die Filter kennen, um Zeilen daraus zu entfernen, ist
    es immer eine gute Idee, die gefilterte Ausgabe zu speichern (anstatt zu versuchen, sie sofort anzuzeigen).
    • Auf diese Weise können Sie Sekundärfilter für den gefilterten Ausgang ausführen, die nicht erneut für das gesamte Objekt ausgeführt werden müssen
    • Speichern Sie in Ihrem Beispiel die erste Ausgabe in einer neuen Datei. Wenn Sie einen anderen Filter kennen, wenden Sie ihn auf diese gespeicherte Datei an
    • Dies impliziert natürlich etwas Speicherplatz für die gefilterte Datei.
      Es funktioniert besser, wenn Ihre Filter die tatsächliche Datei um einen großen Betrag reduzieren
  3. Ein reguläres Linux-Tool wie ' grep', 'sed',' AWK'reicht normalerweise aus, um die Textprotokolldatei sehr gut zu verarbeiten.
    Ich habe mit diesen Dingen häufig Protokolldateien in der Größenordnung von 10 GB verarbeitet.
    Mit diesen Dingen können Sie in ' bash scripts' Ihre eigenen Werkzeuge erstellen.
  4. Unterschätze nicht ' vim', es kann auch große Dateien verarbeiten (aber es wird einige Zeit dauern, also gib ihm gefilterte Dateien)
nik
quelle
0

Sie werden dies sicherlich nicht installiert haben, aber wenn dies eine normale Sache sein soll, müssen Sie sich möglicherweise mit Splunk befassen . Splunk dient zum Indizieren großer Datenmengen wie dieser, damit Sie leichter finden, wonach Sie suchen.

thepocketwade
quelle