大型日志文件有不​​错的日志查看模式吗?


11

我正在使用的某些日志文件很大(> 200Mb),但是在Emacs中浏览它们会很好。目前,默认情况下,Emacs尝试启用log4j模式,这只会减慢所有速度。我真正需要的是一个轻量级的查看器:

  • 禁用撤消模式
  • 日志文件更新时可以自动还原
  • 更新时可以跟随日志的尾部

理想情况下,浏览时只需映射日志文件的一小部分就很好。是否存在这样的日志模式?


3
不是emacs的答案,但是我发现使用带有简单尾号-f的tmux给了我最好的解决方案,使用tmux将允许您停止日志并使用诸如绑定之类的emacs进行搜索。我的日志文件通常大于2GB,并且运行良好。另外,Mx shell + tail -f +没有字体锁定是一个不错的解决方案。
Jordon Biondo

1
并非完全符合您的要求,但M-x fundamental-mode在速度方面可能会比log4j-mode有所改进。
legoscia 2015年

@legoscia:是的,我已经手动切换到文本模式,这很有帮助。
stsquad

在这种情况下,我通常会执行的操作:与@JordonBiondo的建议类似,除了我使用的是传呼机而不是tail,即cat file.log | less。这样的好处是能够使用所有的寻呼机命令,例如一次搜索和显示行数。
wvxvw 2015年

此外,这是:github.com/mbriggs/emacs-pager我发现我已将其添加为书签,但未使用...
wvxvw 2015年

Answers:


7

这就是我用的。它禁用所有可能降低emacs速度的功能,使缓冲区变为只读状态,并设置auto-revert-tail-mode:

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

如果您不希望emacs在所有auto-revert-tail-mode缓冲区中都采用这种方式,则可以添加检查以确保该文件实际上在etc-log-tail-handler顶部以.log结尾,或者使用任何其他您喜欢的标准。


2

我已经成功使用https://github.com/re5et/itail了几年。

这是一个尾巴模式,在自己的缓冲区中打开。


另外,我已经对ESHELL进行了充分的调整以满足我的需求,从而可以合理地良好地舒适地运行Leiningen和其他CLI生成工具,以便可以在缓冲区中轻松查看我的开发生成输出。
猎人

除了发表评论外,请编辑您自己的帖子以包含其他信息。(这样做之后,您可以删除您的评论。)
Scott Weldon 2015年

@ScottWeldon我认为附加信息更适合作为评论
huntar,2015年

评论是为了澄清,建设性批评以及次要或暂时性信息。虽然它可以算是次要的,但我认为它作为编辑同样可以,甚至更好。
Scott Weldon

我已经玩了一点,我很喜欢它,尽管当数据速率很高时它确实会受到影响。
stsquad

0

我读过,如果您将全局字体锁定设置为nil,那么您还应该看到速度的提高

(global-font-lock-mode -1)

有可能

(setq jit-lock-defer-time 0.05)

将提高滚动速度

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.