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.