Gibt es einen anständigen Protokollanzeigemodus für große Protokolldateien?


11

Einige der Protokolldateien, mit denen ich arbeite, sind ziemlich groß (> 200 MB), aber es wäre schön, sie in Emacs zu durchsuchen. Momentan versucht Emacs standardmäßig, den log4j-Modus zu aktivieren, der nur alles verlangsamt. Was ich wirklich brauche, ist ein leichter Betrachter, der:

  • deaktivierter Rückgängig-Modus
  • kann automatisch zurückgesetzt werden, wenn die Protokolldatei aktualisiert wird
  • kann dem Ende des Protokolls folgen, wenn es aktualisiert wird

Im Idealfall wäre es schön, nur einen kleinen Teil der Protokolldatei beim Durchsuchen zuzuordnen. Gibt es solche Protokollmodi?


3
Keine Emacs-Antwort, aber ich habe festgestellt, dass die Verwendung von tmux mit einem einfachen Schwanz -f mir die beste Lösung bietet. Mit tmux können Sie das Protokoll stoppen und mithilfe von Emacs wie Bindungen darin suchen. Meine Protokolldateien sind normalerweise größer als 2 GB und es läuft gut. Alternativ ist Mx Shell + Tail -f + keine Schriftsperre eine gute Lösung.
Jordon Biondo

1
Nicht genau das, wonach Sie fragen, aber vielleicht M-x fundamental-modeeine Verbesserung gegenüber dem log4j-Modus in Bezug auf die Geschwindigkeit.
Legoscia

@legoscia: Ja, ich habe bereits manuell in den Textmodus gewechselt, was hilft.
stsquad

Was ich normalerweise in diesem Fall mache: Ähnlich wie @JordonBiondo vorgeschlagen, außer dass ich einen Pager anstelle von verwende tail, dh cat file.log | less. Dies hat den Vorteil, dass alle Pager-Befehle verwendet werden können, z. B. das Suchen und Anzeigen der Anzahl von Zeilen gleichzeitig.
wvxvw

Außerdem: github.com/mbriggs/emacs-pager Ich habe festgestellt, dass ich es mit einem Lesezeichen versehen habe, aber nicht verwendet habe ...
wvxvw

Antworten:


7

Das benutze ich. Es deaktiviert alles, was Emacs verlangsamen könnte, macht den Puffer schreibgeschützt und richtet den Auto-Revert-Tail-Modus ein:

;; automagically tail log files
(add-to-list 'auto-mode-alist '("\\.log\\'" . auto-revert-tail-mode))

(defun etc-log-tail-handler ()
  (end-of-buffer)
  (make-variable-buffer-local 'auto-revert-interval)
  (setq auto-revert-interval 1)
  (auto-revert-set-timer)
  (make-variable-buffer-local 'auto-revert-verbose)
  (setq auto-revert-verbose nil)
  (read-only-mode t)
  (font-lock-mode 0)
  (when (fboundp 'show-smartparens-mode)
    (show-smartparens-mode 0)))

(add-hook 'auto-revert-tail-mode-hook 'etc-log-tail-handler)

Wenn Sie nicht möchten, dass sich Emacs für alle Puffer im Auto-Revert-Tail-Modus so verhalten, können Sie eine Überprüfung hinzufügen, um sicherzustellen, dass die Datei tatsächlich in .log oben im etc-log-tail-handler endet, oder verwenden was auch immer andere Kriterien Sie mögen.


2

Ich benutze https://github.com/re5et/itail seit einigen Jahren mit Erfolg.

Es ist ein Endmodus, der in einem eigenen Puffer geöffnet wird.


Außerdem habe ich ESHELL so weit an meine Bedürfnisse angepasst, dass Leiningen und andere CLI-Build-Tools relativ gut ausgeführt werden können, sodass ich meine Entwicklungs-Build-Ausgabe problemlos in einem Puffer anzeigen kann.
Huntar

Anstatt zu kommentieren , bearbeiten Sie bitte Ihren eigenen Beitrag, um die zusätzlichen Informationen aufzunehmen. (Danach können Sie Ihren Kommentar löschen.)
Scott Weldon

@ ScottWeldon Ich dachte, die zusätzlichen Informationen waren besser als Kommentar geeignet
Huntar

Kommentare dienen der Klarstellung, konstruktiven Kritik und geringfügigen oder vorübergehenden Informationen. Es könnte sich zwar als minderjährig qualifizieren, aber ich denke, es würde genauso gut, wenn nicht sogar besser als eine Bearbeitung funktionieren.
Scott Weldon

Ich habe ein bisschen damit gespielt und es gefällt mir sehr gut, obwohl es zu leiden scheint, wenn die Datenrate hoch ist.
stsquad

0

Ich habe gelesen, dass Sie auch Geschwindigkeitsverbesserungen sehen sollten, wenn Sie die globale Schriftsperre auf Null setzen

(global-font-lock-mode -1)

und vielleicht

(setq jit-lock-defer-time 0.05)

verbessert die Bildlaufgeschwindigkeit

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.