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?


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.


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.


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

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.