【问题标题】:Best way to view multiple logs at once?一次查看多个日志的最佳方式?
【发布时间】:2026-02-08 07:35:01
【问题描述】:

我目前正在运行 zookeeper 进程和多个内部进程,它们都以文本形式打印到自己的日志文件中。我对 linux 很陌生,但我想知道在一个屏幕中查看多个日志文件而不在 emacs 窗口或 vim 窗口之间切换是否是其他问题。一次查看 3 个、四个或更多日志文件的最佳方式是什么?是否涉及 CAT 或 |命令?

【问题讨论】:

  • lnav 易于安装和使用

标签: linux logging emacs concatenation cat


【解决方案1】:

如果您正在查看实时日志,您可以将tail 与多个文件一起使用,或者使用通配符操作符仅尾随整个目录。

如果您正在挖掘日志,您可以使用 Terminator,它位于 Debian 存储库中,可在一个窗口中打开多个终端会话。

如果你喜欢冒险,你可以使用tmux 来分割你的终端窗口,tmux 的好处是它可以在文本模式下工作,所以你可以通过 ssh 来完成。这是一个相当不错的 tmux 拆分窗格教程http://lukaszwrobel.pl/blog/tmux-tutorial-split-terminal-windows-easily

【讨论】:

    【解决方案2】:

    我喜欢 multitail 作为一种可选但很好的方式来监控多个文件,而无需进行大量黑客攻击。安装后(例如 apt-get install multitail)运行 multitail file1.log file2.log file3.log。 'f1' 键为您提供内联帮助,可以按哪些键。

    但是,如果你想留在vim中,你可以使用answer

    可以在需要时从 ex (whithin vim) 运行这个 oneliner(或者在打开日志文件时将每个命令放在 vimrc 中。)

    :set autoread | au CursorHold * checktime | call feedkeys("lh")

    说明:
    - autoread:从外部更改文件时读取文件(但它不能自行工作,没有内部计时器或类似的东西。它只会在 vim 执行操作时读取文件,例如ex :!中的一个命令
    - CursorHold * checktime:当光标在 'updatetime' 中指定的时间(默认为 4000 毫秒)内未被用户移动时,执行 checktime,检查文件外部的更改
    - call feedkeys("lh"):光标移动一次,左右移动。然后什么也没有发生(...这意味着 CursorHold 被触发,这意味着我们有一个循环

    【讨论】:

      【解决方案3】:

      它突然袭击了我...我应该将日志文件夹目录导入 Eclipse 中的一个空项目,然后我可以快速浏览和检查日志并根据需要在多个监视器上拆分屏幕。 Leon 的所有答案也都是好东西,但由于我已经大量使用 Eclipse,我不妨利用该位置。

      【讨论】: