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?


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.


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.


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

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.