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.