Protokollausgabe im Terminal lesbarer machen

494
baelx

Ich entwickle zurzeit mit Wordpress und überwache die debug.log -Datei, die auf jeder Seite neu geladen wird. Wenn ein Fehler auftritt, werden diese Zeilen beim Aktualisieren dem debug.log hinzugefügt. Die drei Grundmöglichkeiten sind 0 Zeilen (keine Fehler), 1 Zeile (1 Fehler) oder mehrere Zeilen (Mehrfachfehler).

Derzeit habe ich tail -f und / oder less + F als Pager versucht, beim erneuten Laden der Seite nach neuen Fehlern zu suchen. Mein Problem ist, dass ich eine Möglichkeit haben möchte, die Ausgabe lesbarer zu machen. Derzeit fügt jeder dieser Befehle der vorhandenen Liste nur zusätzliche Protokollzeilen hinzu. Es gibt nicht wirklich einen Unterschied zwischen den Zeilen neben dem Zeitstempel auf jeder Zeile.

Ich würde gerne einen Weg finden, in der Lage zu sein, klar und schnell zu sehen, welche Zeilen (wenn überhaupt) zuletzt generiert wurden - dh von der neuesten Seitenaktualisierung. Ich habe nach neuen Zeilen / Zeilenumbrüchen zwischen den einzelnen Ausgaben gesucht oder nach einer Möglichkeit, die neuesten Zeilen hervorzuheben, aber es scheint nicht so, als würden viele Ergebnisse angezeigt.

Ich bin offen für die Verwendung anderer Befehle, Bash-Skripts usw. Ich brauche nur eine Möglichkeit, die neuen Zeilen in einer bestimmten Protokolldatei (pro Seitenaktualisierung) klar anzuzeigen . Alle Hilfe wird geschätzt!

2
Wenn ich PHP-Dev-Sachen mache, beobachte ich das Protokoll und grep es nach meiner IP-Adresse ... Ist die Client-IP in der debug.log? Wenn ja, tail -f /path/to/debug.log | grep 10.22.33.44` wird zu Testzwecken nur Ihren Datenverkehr in den Protokollen isolieren ivanivan vor 7 Jahren 0
@ivanivan Es ist momentan lokale Entwicklung, also ist es sowieso nur mein eigener Verkehr. Selbst wenn dies nicht der Fall wäre, würde das Problem immer noch nicht zum Kernpunkt des Problems werden: Unterscheidung zwischen Fehlerprotokollen beim letzten Mal, die ich neu geladen habe, und Fehlerprotokollen beim aktuellen Neuladen. Hier geht es mehr um die Lesbarkeit von Protokollen als um irgendetwas. Wenn alle Protokolle aller Aktualisierungen zusammengefasst sind, ist es schwer zu sagen, welche ich betrachten muss, um bei meiner Entwicklung zu helfen. baelx vor 7 Jahren 0
Ah. In diesem Fall drücken Sie im Termfenster, das die Protokolle mit "tail -f" betrachtet, einige Male die Eingabetaste. Die Protokolleinträge werden für jeden Klick durch leere Zeilen getrennt. ivanivan vor 7 Jahren 1
@ivanivan Das ist der Ghetto-Hack, den ich selbst benutze, er erfordert jedoch menschliches Eingreifen. barrycarter vor 7 Jahren 0
@ivanivan Danke für diesen Vorschlag. Letztendlich wäre die ideale Lösung für mein Problem eine Automatisierung. Wissen Sie, wie Sie das tun können? baelx vor 7 Jahren 0
Verwenden Sie eine `Cron'-Aufgabe, um ein paar neue Zeilen pro Minute in die Protokolldatei aufzunehmen. ivanivan vor 7 Jahren 0

1 Antwort auf die Frage

1
barrycarter

Dies ist ein extremer Ghetto-Hack und ich bin ein schlechter Mensch für die Veröffentlichung:

perl -le 'for(;;)' & tail -s 10 -n 0 -f filename.txt

Wie es funktioniert:

  • Der Hintergrund-Perl-Prozess druckt alle 3 Sekunden eine neue Zeile auf dem Bildschirm
  • Der tailBefehl zeigt neue Zeilen an, filename.txtsobald diese verfügbar sind.

Wenn Sie fertig sind, perlbeenden Sie den Hintergrundprozess oder der Druckvorgang wird für immer auf dem Bildschirm fortgesetzt.

Nach der ersten Aktualisierung ist Ihr vorgeschlagener Befehl großartig, da er mit keiner der vorherigen Zeilen / Ausgaben beginnt. Nach einigen Aktualisierungen tritt jedoch das gleiche Problem auf, dass alle Protokollanweisungen zusammengefasst werden. Schlagen Sie vor, diesen Befehl bei jeder Aktualisierung auszuführen? - Vielleicht mit einem Bash-Skript oder einem anderen Tool automatisiert? Alle anderen Tipps, die Sie anbieten könnten, wären großartig! baelx vor 7 Jahren 0
Möchten Sie nur eine neue Zeile zwischen den einzelnen Protokollnachrichten, oder möchten Sie mehrere Protokollnachrichten zusammenfassen und dann eine neue Zeile haben? Wenn letztere, wie viele Protokollnachrichten möchten Sie gleichzeitig gruppieren? barrycarter vor 7 Jahren 0
@ fixer1234 Mir wurde vorher gesagt, dass zu viele meiner Kommentare eigentlich Antworten sein sollten, also habe ich zugesagt, mehr Antworten zu posten. Sollte dies ein Kommentar sein? Ich habe einiges hin und her erwartet, da ich mir ehrlich gesagt nicht sicher war, ob es so einfach ist. barrycarter vor 7 Jahren 0
@ barrycarter Ich habe jetzt einige Änderungen an meiner ursprünglichen Frage vorgenommen, die es hoffentlich klarer machen. Zusammenfassend kann gesagt werden, dass eine Seitenaktualisierung manchmal 0 Zeilen für die Protokolldateien und manchmal mehrere Zeilen enthält. Ich kann nicht kontrollieren, wie viele es nach einer bestimmten Aktualisierung gibt, aber ich möchte trotzdem klar definieren, welche nach der letzten Aktualisierung aufgetaucht sind und welche von früheren Aktualisierungen stammen. baelx vor 7 Jahren 0
OK, bearbeitete Antwort. barrycarter vor 7 Jahren 0
Vielen Dank für Ihre Antwort und ich habe darüber nachgedacht, es zu verwenden, aber es ist nicht ganz so praktisch, wie ich es gerne hätte. Letztendlich muss ich vielleicht ein Build-Tool für die Webentwicklung verwenden, das die Seitenaktualisierung zuerst überwacht und dann in die Datei debug.log wechselt und diese dann ausgibt. Dies ist im Gegensatz dazu, nur das Debug-Protokoll zu betrachten und einen Weg zu finden, sie zu gruppieren. Vielen Dank nochmal an alle baelx vor 7 Jahren 0