Есть ли приличный режим просмотра журнала для больших файлов журнала?

11

Некоторые файлы журналов, с которыми я работаю, довольно большие (> 200 МБ), но было бы неплохо просмотреть их в Emacs. В настоящий момент по умолчанию Emacs пытается включить режим log4j, который просто все замедляет. Что мне действительно нужно, так это легкий просмотрщик, который:

  • отключен режим отмены
  • может автоматически возвращаться при обновлении файла журнала
  • может следить за хвостом журнала при его обновлении

В идеале было бы неплохо просто отобразить небольшую часть файла журнала при просмотре. Существуют ли такие режимы журналов?

stsquad
источник
3
Не ответ emacs, но я обнаружил, что использование tmux с простым хвостом -f дало мне лучшее решение, использование tmux позволит вам остановить журнал и искать его, используя emacs, например, привязки. Мои файлы журнала обычно больше 2 ГБ, и это работает хорошо. В качестве альтернативы Mx shell + tail -f + no font lock - хорошее решение.
Джордон Биондо
1
Не совсем то, что вы просите, но, возможно, M-x fundamental-modeбудет улучшение по сравнению с log4j-mode с точки зрения скорости.
Legoscia
@legoscia: да, я уже вручную переключаюсь в текстовый режим, который помогает.
Stsquad
То , что я обычно делаю в этом случае: похоже на то , что @JordonBiondo предложил, кроме я использую пейджер вместо tail, то есть cat file.log | less. Преимущество этого заключается в возможности использования всех команд пейджера, таких как поиск и отображение количества строк одновременно.
wvxvw
Кроме того, это: github.com/mbriggs/emacs-pager Я обнаружил, что
добавил

Ответы:

7

Это то, что я использую. Он отключает все, что может замедлить emacs, делает буфер доступным только для чтения и устанавливает режим auto-revert-tail-mode:

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

Если вы не хотите, чтобы emacs вел себя таким образом для всех буферов auto-revert-tail-mode, вы можете добавить проверку, чтобы убедиться, что файл на самом деле заканчивается в .log в верхней части etc-log-tail-handler, или использовать любые другие критерии, которые вам нравятся.

Джозеф Гарвин
источник
2

Я использую https://github.com/re5et/itail с успехом в течение нескольких лет.

Это хвостовой режим, который открывается в своем собственном буфере.

Хантар
источник
Кроме того, я достаточно адаптировал ESHELL к своим потребностям, чтобы достаточно комфортно запускать Leiningen и другие инструменты сборки CLI, чтобы я мог легко просматривать результаты своей сборки разработки в буфере.
Охота
Вместо комментирования , пожалуйста, отредактируйте свой собственный пост, чтобы включить дополнительную информацию. (После этого вы можете удалить свой комментарий.)
Скотт Уэлдон
@ScottWeldon Я думал, что дополнительная информация была более подходящей как комментарий
охота
Комментарии предназначены для разъяснения, конструктивной критики и незначительной или кратковременной информации. Хотя он может считаться второстепенным, я думаю, что он будет работать так же хорошо, если не лучше, как редактирование.
Скотт Уэлдон
Я немного поиграл с этим, и мне это очень нравится, хотя, кажется, он страдает, когда скорость передачи данных высока.
Stsquad
0

Я читал, что если вы установите глобальную блокировку шрифта на ноль, вы также должны увидеть улучшения скорости

(global-font-lock-mode -1)

и возможно

(setq jit-lock-defer-time 0.05)

улучшит скорость прокрутки

Дэррил Геббс
источник