Czy istnieje porządny tryb przeglądania dzienników dla dużych plików dziennika?

11

Niektóre pliki dziennika, z którymi pracuję, są dość duże (> 200 Mb), ale byłoby miło przeglądać je w Emacsie. W tej chwili domyślnie Emacs próbuje włączyć tryb log4j, który po prostu spowalnia wszystko. Tak naprawdę potrzebuję lekkiej przeglądarki, która:

  • wyłączony tryb cofania
  • może automatycznie przywrócić, gdy plik dziennika jest aktualizowany
  • może śledzić ogon dziennika podczas aktualizacji

Idealnie byłoby po prostu zmapować małą część pliku dziennika podczas przeglądania. Czy istnieją takie tryby logowania?

stsquad
źródło
3
Nie jest to odpowiedź emacsa, ale odkryłem, że użycie tmux z prostym ogonem dało mi najlepsze rozwiązanie, użycie tmux pozwoli ci zatrzymać dziennik i przeszukiwać go za pomocą emacsa jak wiązania. Moje pliki dziennika są zwykle większe niż 2 GB i działają dobrze. Alternatywnie fajne jest rozwiązanie Mx shell + tail -f + brak blokady czcionek.
Jordon Biondo
1
Nie do końca to, o co prosisz, ale być może M-x fundamental-modebyłaby to poprawa w stosunku do trybu log4j pod względem szybkości.
legoscia
@legoscia: tak, ręcznie zmieniłem już tryb tekstowy, co pomaga.
stsquad
Co zwykle robię w tym przypadku: podobnie jak sugerował @JordonBiondo, tyle że zamiast tego korzystam z pagera tail, tj cat file.log | less. Ma to tę zaletę, że można używać wszystkich poleceń pagera, takich jak wyszukiwanie i wyświetlanie liczby wierszy jednocześnie.
wvxvw
Ponadto, to: github.com/mbriggs/emacs-pager Znalazłem, że dodałem do zakładek, ale nie
użyłem

Odpowiedzi:

7

Tego używam. Wyłącza wszystko, co może spowolnić emacsa, powoduje, że bufor jest tylko do odczytu i ustawia tryb automatycznego cofania-ogona:

;; 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)

Jeśli nie chcesz, aby emacs zachowywał się w ten sposób dla wszystkich buforów trybu automatycznego przywracania-końca-ogona, możesz dodać zaznaczenie, aby upewnić się, że plik rzeczywiście kończy się na .log u góry modułu obsługi etc-log-tail, lub użyj niezależnie od innych kryteriów.

Joseph Garvin
źródło
2

Używam https://github.com/re5et/itail z powodzeniem od kilku lat.

Jest to tryb ogona, który otwiera się we własnym buforze.

huntar
źródło
Dodatkowo dostosowałem ESHELL do moich potrzeb, aby wygodnie uruchamiać Leiningen i inne narzędzia do budowania CLI dość dobrze, dzięki czemu mogę łatwo przeglądać wyniki mojej kompilacji w buforze.
huntar
Zamiast komentować , edytuj swój post, aby uwzględnić dodatkowe informacje. (Po wykonaniu tej czynności możesz usunąć swój komentarz.)
Scott Weldon
@ScottWeldon Myślałem, że dodatkowe informacje były bardziej odpowiednie jako komentarz
huntar
Komentarze mają na celu wyjaśnienie, konstruktywną krytykę oraz drobne lub przejściowe informacje. Chociaż może kwalifikować się jako niewielki, myślę, że działałby równie dobrze, jeśli nie lepiej, jako edycja.
Scott Weldon,
Grałem z tym trochę i całkiem mi się podoba, chociaż wydaje się, że cierpi, gdy szybkość przesyłania danych jest wysoka.
stsquad
0

Czytałem, że jeśli ustawisz globalne blokowanie czcionek na zero, powinieneś również zobaczyć poprawę prędkości

(global-font-lock-mode -1)

I może

(setq jit-lock-defer-time 0.05)

poprawi prędkość przewijania

Darryl Hebbes
źródło