Existe um modo de visualização de log decente para arquivos de log grandes?

11

Alguns dos arquivos de log com os quais estou trabalhando são bastante grandes (> 200Mb), mas seria bom procurá-los no Emacs. No momento, por padrão, o Emacs tenta ativar o modo log4j, o que reduz a velocidade de tudo. O que eu realmente preciso é de um visualizador leve que:

  • desativado modo desfazer
  • pode reverter automaticamente quando o arquivo de log é atualizado
  • pode seguir o final do log quando ele atualiza

Idealmente, seria bom mapear apenas uma pequena parte do arquivo de log enquanto você navega. Existe algum desses modos de log?

stsquad
fonte
3
Não é uma resposta do emacs, mas descobri que o uso do tmux com uma simples cauda -f me deu a melhor solução, o uso do tmux permitirá que você pare o log e procure em torno dele usando o emacs como ligações. Meus arquivos de log geralmente têm mais de 2 GB e funcionam bem. Como alternativa, o Mx shell + tail -f + no font lock é uma boa solução.
Jordon Biondo
1
Não é exatamente o que você está pedindo, mas talvez M-x fundamental-modeseja uma melhoria em relação ao modo log4j em termos de velocidade.
legoscia
@legoscia: Sim, eu já mudei manualmente para o modo texto, o que ajuda.
Stsquad
O que eu costumo fazer neste caso: semelhante ao que @JordonBiondo sugeriu, exceto que estou usando um pager em vez de tail, ie cat file.log | less. Isso tem o benefício de poder usar todos os comandos do pager, como pesquisar e exibir o número de linhas por vez.
wvxvw
Além disso, este: github.com/mbriggs/emacs-pager eu achei que eu marcada, mas não usar ...
wvxvw

Respostas:

7

É isso que eu uso. Ele desativa tudo o que pode desacelerar o emacs, torna o buffer somente leitura e configura o modo de reversão automática de cauda:

;; 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 você não deseja que o emacs se comporte dessa maneira para todos os buffers de modo de reversão automática, você pode adicionar uma verificação para garantir que o arquivo realmente termine em .log na parte superior do etc-log-tail-handler, ou use qualquer outro critério que você quiser.

Joseph Garvin
fonte
2

Uso o https://github.com/re5et/itail com sucesso há alguns anos.

É um modo de cauda que se abre em seu próprio buffer.

huntar
fonte
Além disso, adaptei o ESHELL o suficiente às minhas necessidades para executar confortavelmente razoavelmente bem o Leiningen e outras ferramentas de criação de CLI, para que eu possa visualizar facilmente minha saída de desenvolvimento em um buffer.
HUNTAR
Em vez de comentar , edite sua própria postagem para incluir as informações adicionais. (Depois de fazer isso, você pode excluir seu comentário.)
Scott Weldon
@ScottWeldon Eu pensei que a informação adicional era mais apropriado como um comentário
HUNTAR
Os comentários são para esclarecimentos, críticas construtivas e informações menores ou transitórias. Embora possa se qualificar como menor, acho que funcionaria tão bem quanto, se não melhor, como uma edição.
10135 Scott Junker
Eu brinquei um pouco com isso e gosto bastante, embora pareça sofrer quando a taxa de dados é alta.
Stsquad
0

Eu li que, se você definir o bloqueio global de fontes como nulo, também deverá ver melhorias na velocidade

(global-font-lock-mode -1)

e talvez

(setq jit-lock-defer-time 0.05)

melhorará as velocidades de rolagem

Darryl Hebbes
fonte