Ami*_*ani 298 command-line colors alias highlighting tail
我希望能够跟踪服务器日志文件的输出,该文件包含以下消息:
INFO
SEVERE
Run Code Online (Sandbox Code Playgroud)
等,如果是SEVERE
,则以红色显示该行;如果是INFO
,则为绿色。我可以为tail
帮助我执行此操作的命令设置什么样的别名?
Gil*_*il' 260
尝试multitail ¹。这是 的超泛化tail -f
。您可以在单独的窗口中观看多个文件,根据内容突出显示行等。
multitail -c /path/to/log
Run Code Online (Sandbox Code Playgroud)
颜色是可配置的。如果默认配色方案不适合您,请在配置文件中编写您自己的配色方案。例如,multitail -cS amir_log /path/to/log
使用以下命令调用~/.multitailrc
:
colorscheme:amir_log
cs_re:green:INFO
cs_re:red:SEVERE
Run Code Online (Sandbox Code Playgroud)
另一种解决方案,如果你在不方便安装非标准工具的服务器上,结合tail -f
sed 或 awk 来添加颜色选择控制序列。这需要tail -f
立即刷新其标准输出,即使其标准输出是管道,我不知道是否所有实现都这样做。
tail -f /path/to/log | awk '
/INFO/ {print "\033[32m" $0 "\033[39m"}
/SEVERE/ {print "\033[31m" $0 "\033[39m"}
'
Run Code Online (Sandbox Code Playgroud)
或与sed
tail -f /path/to/log | sed --unbuffered \
-e 's/\(.*INFO.*\)/\o033[32m\1\o033[39m/' \
-e 's/\(.*SEVERE.*\)/\o033[31m\1\o033[39m/'
Run Code Online (Sandbox Code Playgroud)
如果您的 sed 不是 GNU sed,请替换\o033
为文字转义字符并删除--unbuffered
.
另一种可能性是tail -f
在Emacs shell 缓冲区中运行并使用 Emacs 的语法着色能力。
¹的历史网站在2021年初消失了最新版本仍然在许多发行版中提供,如拱桥,Debian的。
thi*_*ias 142
grc,通用着色器非常酷。
apt-get install grc
Run Code Online (Sandbox Code Playgroud)
做就是了
grc tail -f /var/log/apache2/error.log
Run Code Online (Sandbox Code Playgroud)
享受!
您还可以在GitHub 上找到它。
ulo*_*sEI 53
你看过ccze吗?您可以使用该选项-c
或直接在您的配置文件中自定义某些关键字的默认颜色。如果您的屏幕在着色后清除,您必须使用 option -A
。
编辑:
如果您真的希望将整条线涂成红色,您还可以尝试以下操作:
$ tail -f myfile.log | perl -pe 's/.*SEVERE.*/\e[1;31m$&\e[0m/g'
Run Code Online (Sandbox Code Playgroud)
\e[1;31m
会给你红色。如果您想要一些黄色,请使用\e[1;33m
,并使用绿色\e[1;32m
。在\e[0m
恢复正常的文本颜色。
nic*_*laj 30
您可以使用Rainbow,它根据正则表达式为线条着色:
rainbow --red='SEVERE.*' --green='INFO.*' tail -f my-file.log
Run Code Online (Sandbox Code Playgroud)
它还与预定义的 configs捆绑在一起,例如用于 Tomcat 日志:
rainbow --config=tomcat tail -f my-file.log
Run Code Online (Sandbox Code Playgroud)
(免责声明:我是作者)
小智 18
您可以使用colortail:
colortail -f /var/log/messages
Run Code Online (Sandbox Code Playgroud)
mat*_*tdm 13
另请注意,如果您只想查找一个匹配的正则表达式,GNU grep with--color
将起作用 - 只需tail
通过管道传输您的输出。
tom*_*nux 10
要从标准命令(如 )获得彩色输出grep
,您应该alias
在您的.bashrc
# User specific aliases and functions
alias grep='grep --color=auto'
Run Code Online (Sandbox Code Playgroud)
当您在文件中 grep 某些内容时,您会看到类似这样的内容(但可能是红色的):
[root@linuxbox mydir]# grep "\(INFO\|SEVERE\)" /var/log/logname 此条目是一条信息 严重此条目是一个警告! 这个条目是一个信息 这个条目是一个信息 严重这个条目是一个警告!
如果想使用tail
orawk
并且希望颜色保留到管道中,那么别名是不够的,您应该使用--color=always
参数,例如:
[root@linubox mydir]# grep --color=always "\(INFO\|SEVERE\)" /var/log/logname | 尾巴 -f | awk '{ 打印 $1 }' 这个 严重 这个 这个 严重
如果你想要awk
故事的彩色文本有点复杂但更强大,例如:
[root@linubox mydir]# tail -f /var/log/messages | awk '{if ($5 ~ /INFO/) 打印 "\033[1;32m"$0"\033[0m"; else if ($1 ~ /SEVERE/) 打印 "\033[1;31m"$0"\033[0m"; 否则打印 $0}' 此条目是一条信息 严重 此条目是一个警告! 这是另一个条目 此条目是一个 INFO 这是另一个条目 此条目是一条信息 严重 此条目是一个警告!
每条线都有自己的颜色。
还有许多其他方法可以使用其他工具从 shell 获取彩色文本,其他成员对它们进行了很好的描述。
小智 7
我很喜欢colorex。简单,但令人满意。
tail -f /var/log/syslog | colorex -G '[0-9]{2}:[0-9]{2}:[0-9]{2}' -b $(hostname)
Run Code Online (Sandbox Code Playgroud)
小智 6
基于@uloBasEI 的回答,我尝试使用... | perl ... | perl ...
,但 Linux 管道有点疯狂,而且速度太慢。如果我只将所有规则放在一个perl
命令中,它就可以正常工作。
例如,创建一个perl
文件colorTail.pl如下:
#!/usr/bin/perl -w
while(<STDIN>) {
my $line = $_;
chomp($line);
for($line){
s/==>.*<==/\e[1;44m$&\e[0m/gi; #tail multiples files name in blue background
s/.*exception.*|at .*/\e[0;31m$&\e[0m/gi; #java errors & stacktraces in red
s/info.*/\e[1;32m$&\e[0m/gi; #info replacement in green
s/warning.*/\e[1;33m$&\e[0m/gi; #warning replacement in yellow
}
print $line, "\n";
}
Run Code Online (Sandbox Code Playgroud)
将其用作:
tail -f *.log | perl colorTail.pl
tail -f *.log -f **/*.log | perl colorTail.pl
Run Code Online (Sandbox Code Playgroud)
注意:您也可以在MobaXTerm上使用它!只需perl
从MobaXTerm站点下载插件即可。
归档时间: |
|
查看次数: |
229939 次 |
最近记录: |