Esiste una modalità di visualizzazione del registro decente per file di registro di grandi dimensioni?


11

Alcuni dei file di registro con cui sto lavorando sono abbastanza grandi (> 200 Mb) ma sarebbe bello sfogliarli in Emacs. Al momento, per impostazione predefinita, Emacs tenta di abilitare la modalità log4j che rallenta tutto. Ciò di cui ho veramente bisogno è un visualizzatore leggero che:

  • modalità di annullamento disabilitata
  • può ripristinare automaticamente quando il file di registro viene aggiornato
  • può seguire la coda del registro quando si aggiorna

Idealmente sarebbe bello mappare solo una piccola parte del file di registro mentre sfogli. Esistono tali modalità di registro?


3
Non è una risposta di emacs, ma ho scoperto che l'uso di tmux con una semplice coda -f mi ha dato la soluzione migliore, l'uso di tmux ti permetterà di fermare il registro e di cercarlo usando emacs come i bind. I miei file di registro sono generalmente superiori a 2 GB e funzionano bene. In alternativa Mx shell + tail -f + no lock font è una buona soluzione.
Jordon Biondo,

1
Non esattamente quello che stai chiedendo, ma forse M-x fundamental-modesarebbe un miglioramento rispetto alla modalità log4j in termini di velocità.
Legoscia,

@legoscia: sì, sono già passato manualmente alla modalità testo che aiuta.
stsquad,

Cosa faccio di solito in questo caso: simile a quello che ha suggerito @JordonBiondo, tranne che sto usando un cercapersone invece di tail, cioè cat file.log | less. Ciò ha il vantaggio di poter utilizzare tutti i comandi del cercapersone, come la ricerca e la visualizzazione del numero di righe alla volta.
wvxvw,

Inoltre, questo: github.com/mbriggs/emacs-pager Ho scoperto di averlo
aggiunto ai

Risposte:


7

Questo è quello che uso. Disabilita tutto ciò che potrebbe rallentare emacs, rende il buffer di sola lettura e imposta la modalità di ripristino automatico della coda:

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

Se non si desidera che emacs si comporti in questo modo per tutti i buffer della modalità coda di ripristino automatico, è possibile aggiungere un segno di spunta per assicurarsi che il file finisca effettivamente in .log nella parte superiore di etc-log-tail-handler o utilizzare qualunque altro criterio ti piaccia.


2

Ho usato https://github.com/re5et/itail con successo per un paio di anni.

È una modalità di coda che si apre nel suo buffer.


Inoltre, ho adattato ESHELL abbastanza alle mie esigenze per eseguire comodamente Leiningen e altri strumenti di compilazione della CLI ragionevolmente bene, così da poter visualizzare facilmente l'output della mia build di sviluppo in un buffer.
Huntar,

Invece di commentare , modifica il tuo post per includere le informazioni aggiuntive. (Dopo averlo fatto, puoi eliminare il tuo commento.)
Scott Weldon,

@ScottWeldon Ho pensato che le informazioni aggiuntive fossero più appropriate come commento
huntar l'

I commenti sono per chiarimenti, critiche costruttive e informazioni minori o transitorie. Sebbene possa qualificarsi come minore, penso che funzionerebbe altrettanto bene, se non meglio, come una modifica.
Scott Weldon,

Ci ho giocato un po 'e mi piace molto anche se sembra che soffra quando la velocità dei dati è alta.
stsquad,

0

Ho letto che se imposti il ​​blocco globale dei caratteri su zero dovresti vedere anche miglioramenti della velocità

(global-font-lock-mode -1)

e forse

(setq jit-lock-defer-time 0.05)

migliorerà le velocità di scorrimento

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.