ccze 是一个出色的日志着色器。问题是,尽管手册中说了些什么,但 /usr/lib64/ccze$HOME/.ccze 中没有插件。看起来所有插件都编译成二进制文件(所以它们实际上不是插件),我无法轻松修改突出显示。

我想实现什么?

我需要添加一些以红色突出显示的更多图案。尤其是被空格包围的单个 0。由于我无法轻松修改 ccze,因此我正在考虑将其与 grep 结合使用:

tail -f `/bin/ls -1td /var/log/updates/index_*.log` | ccze -A | grep --color '\| 0 '

但这不会产生任何输出(挂起?),尽管事实上:
tail -f `/bin/ls -1td /var/log/updates/index_*.log` | grep --color '\| 0 '

正确突出显示零和:
tail -f `/bin/ls -1td /var/log/updates/index_*.log` | ccze -A

正确突出显示其余部分。

提问时间

你能帮我修改上面的命令,让 cczegrep 一起玩得很好吗?或者只是如何在不重新编译 的情况下自定义 ccze - ,以便正确突出显示新内容。

答案我不想看到
  • 为什么不用multitail,这么完美?
  • 为什么不使用任何其他库(它不是 ccze 的直接替代品)?
  • 最佳答案

    ccze FAQ 提到了在某些系统上,“插件”实际上是“内置”的原因:存在 PCRE 编译错误,除了静态链接插件之外,作者不知道如何修复。

    因此,您无法修改插件的工作方式,而只能进行原位修改。但是......原位修改的问题是,一般来说, it's not possible to detect the current color, set a new one, then get back to that current color

    考虑:

    ccze -A <httpd.log | sed "s/ 0 /$(tput setaf 2)&$(tput sgr0)/"
    

    除了这会将匹配后的颜色重置为普通终端,这可能会破坏您想要的彩色输出。因此,您可能想要设置和重置颜色以外的其他内容,例如 粗体 、闪烁或下划线。

    考虑:
    ccze -A <httpd.log | sed "s/ 0 /$(tput smso)&$(tput rmso)/"
    

    这使“0 ”变为粗体。为方便起见,我在这里使用 tput ,您当然可以直接使用 ANSI escape sequences

    关于linux - 结合ccze和grep?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/39043472/

    10-13 08:05