¿Existe un modo de visualización de registro decente para archivos de registro grandes?


11

Algunos de los archivos de registro con los que estoy trabajando son bastante grandes (> 200Mb) pero sería bueno explorarlos en Emacs. Por el momento, por defecto, Emacs intenta habilitar el modo log4j que simplemente ralentiza todo. Lo que realmente necesito es un visor ligero que:

  • modo de deshacer deshabilitado
  • puede revertirse automáticamente cuando se actualiza el archivo de registro
  • puede seguir la cola del registro cuando se actualiza

Idealmente, sería bueno mapear una pequeña porción del archivo de registro mientras navega. ¿Existen tales modos de registro?


3
No es una respuesta de emacs, pero he descubierto que usar tmux con una cola simple -f me ha dado la mejor solución, usar tmux le permitirá detener el registro y buscar alrededor usando emacs como enlaces. Mis archivos de registro suelen tener más de 2 gb y funciona bien. Alternativamente, Mx shell + tail -f + sin bloqueo de fuente es una buena solución.
Jordon Biondo

1
No es exactamente lo que está pidiendo, pero quizás M-x fundamental-modesería una mejora con respecto al modo log4j en términos de velocidad.
legoscia

@legoscia: sí, ya he estado cambiando manualmente al modo de texto, lo que ayuda.
stsquad

Lo que suelo hacer en este caso: similar a lo que sugirió @JordonBiondo, excepto que estoy usando un localizador en lugar de tail, es decir cat file.log | less. Esto tiene la ventaja de poder utilizar todos los comandos del buscapersonas, como buscar y mostrar el número de líneas a la vez.
wvxvw

Además, esto: github.com/mbriggs/emacs-pager encontré que lo marqué como favorito, pero no
usé

Respuestas:


7

Esto es lo que yo uso. Deshabilita todo lo que podría ralentizar emacs, hace que el búfer sea de solo lectura y configura el modo de cola automática:

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

Si no desea que emacs se comporte de esta manera para todos los búferes de modo de cola automática, puede agregar una verificación para asegurarse de que el archivo realmente termine en .log en la parte superior de etc-log-tail-handler, o use cualquier otro criterio que te guste.


2

He estado usando https://github.com/re5et/itail con éxito durante un par de años.

Es un modo de cola que se abre en su propio búfer.


Además, he adaptado ESHELL lo suficiente a mis necesidades para ejecutar cómodamente Leiningen y otras herramientas de compilación de CLI razonablemente bien para que pueda ver mi salida de compilación de desarrollo fácilmente en un búfer.
huntar

En lugar de comentar , edite su propia publicación para incluir la información adicional. (Después de hacerlo, puede eliminar su comentario.)
Scott Weldon

@ScottWeldon Pensé que la información adicional era más apropiada como comentario
huntar

Los comentarios son para aclaraciones, críticas constructivas e información menor o transitoria. Si bien podría calificar como menor, creo que funcionaría igual de bien, si no mejor, como una edición.
Scott Weldon

He jugado un poco con esto y me gusta bastante, aunque parece sufrir cuando la velocidad de datos es alta.
stsquad

0

He leído que si configura el bloqueo global de fuentes en cero, también debería ver mejoras de velocidad

(global-font-lock-mode -1)

y tal vez

(setq jit-lock-defer-time 0.05)

mejorará las velocidades de desplazamiento

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.