我迫切需要一种方法来在读取不断附加的文件时为较少的输出着色。
有问题的文件是 Resin servlet 容器日志。
我当前的配色方案“实现”可以使用关键字周围的颜色tail -F
并进行编辑。sed
我有四个单词要着色:INFO, WARN, ERROR, DEBUG
,其中一个每行出现一次。
我尝试过使用LESSOPEN
环境变量,但我似乎无法继续阅读日志。文件一旦打开就不会被拖尾。
我对服务器的控制很少,除了主文件夹中的我自己的脚本外,无法安装任何其他东西,因此没有软件包。有问题的服务器是 RHEL 6.4。
问题是less
不继续读取文件。有没有办法使用LESSOPEN
环境变量连续跟踪日志,或者我是否需要一些更复杂的工具?
答案1
问题出在linux上的管道上。CTRLc关闭管道并且less
无法重新打开管道。
我发现可行的解决方案是将彩色日志重定向到一个文件,然后使用less
.一份文件能尾随在 之后CTRL-c
,因此我只需执行以下操作:
tail -F -c +1 | colorize > /tmp/logfilename &
less -Sr /tmp/logfilename
奇迹般有效。
答案2
我在这里看到两个问题:
- 如何以更少的速度对输出进行着色
- 如何让 less 表现得像 tail -f
我无法回答第一个问题,尽管这LESSOPEN
似乎是一个不错的途径。第二个很简单:启动 less as或如果 less 已经在运行则less +F
点击。ShiftF
答案3
你可以跑tail -f
在 Emacs shell 缓冲区中,然后让 Emacs 进行着色。
嗨锁让您快速突出显示与正则表达式匹配的单词。有一种粗略的方法可以将突出显示模式保存在文件中,但是当文件实际上是命令的输出时,它并不方便。你最好写一个简单的主要模式和字体锁定 关键词。
答案4
我使用 vim 来模拟彩色less
。它有一个less
宏并使用 Vim 配色方案。
我将其添加到我的 bashrc 中:
alias cless='/usr/share/vim/vim73/macros/less.sh'
对于拖尾/跟随,您将需要一些允许跟随的 Vim 插件。也许尝试一下尾束插入。