如何为Docker容器着色日志

Mbd*_*ded 5 logging grep docker

我有一个容器,该容器在日志中有时会写一个对我来说很重要的关键字,我想在终端中用彩色突出显示该单词,但重要的是仍要实时查看所有内容日志(-跟随)。我刚试过命令

docker logs -f my_app --tail=100 | grep --color -E '^myWord'
Run Code Online (Sandbox Code Playgroud)

但不起作用。

因此,存在一些执行此操作的方法吗?

Joe*_*off 6

尝试这个。

docker logs -f my_app --tail=100 | grep --color=always -E '^myWord'
Run Code Online (Sandbox Code Playgroud)

注意“ --color = always ”参数。

另一种选择是使用https://github.com/jlinoff/colorize之类的东西。我写这篇文章是专门针对这种情况的。例如,它可以为每种图案指定不同的颜色(有关详细信息,请参见帮助)。

这是一个如何在您的情况下使用它的示例。

$ curl -L https://github.com/jlinoff/colorize/releases/download/v0.8.1/colorize-linux-amd64 --out colorize
$ chmod a+x colorize
$ ./colorize -h
$ docker logs -f my_app --tail=100 | ./colorize '^myWord'
$ # really make it standout.
$ docker logs -f my_app --tail=100 | ./colorize -c red+greenB+bold '^myWord'
Run Code Online (Sandbox Code Playgroud)


spi*_*iil 6

我使用ccze。正如@aimless所说,grc也是强大的工具。sudo apt install ccze对于像debian / ubuntu这样的操作系统,它很容易安装

但是,如果要给stderr着色,则需要将stderr输出重定向到stdout。例如:

docker logs -f my-app 2>&1 | ccze -m ansi
Run Code Online (Sandbox Code Playgroud)

-m ansi如果您想正常滚动输出,arg 会有所帮助