journalctl 本身不支持内置高亮,但可通过 grep、sed 或 jq 结合实现关键词高亮:grep --color=always 匹配 error/warn 等;sed 自定义颜色;jq 提取字段后高亮;注意终端兼容性与分页器干扰。

journalctl 本身不支持内置高亮,但结合 grep 或其他文本处理工具,能轻松让 ERROR、WARN、CRITICAL 等关键词在终端中醒目跳出来,一眼锁定问题。
用 grep 高亮错误关键词(最常用)
这是最直接、零依赖的方法。核心是加 --color=always 和正则匹配:
-
journalctl -u nginx.service -f | grep --color=always -E 'ERROR|WARN|CRITICAL|FAILED|panic'—— 实时跟踪并高亮常见错误词 -
journalctl -u mysql.service --since "2 hours ago" | grep --color=always -i "timeout\|refused\|denied"—— 查历史日志时高亮权限或连接类异常 - 加
-i参数忽略大小写,避免漏掉小写的 warn 或 failed
用 sed 手动染色(更灵活控制颜色)
如果想自定义颜色(比如红色标 ERROR,黄色标 WARN),可用 sed:
journalctl -u api.service -f | sed -e 's/\(ERROR\)/\x1b[1;31m\1\x1b[0m/g' -e 's/\(WARN\)/\x1b[1;33m\1\x1b[0m/g'-
\x1b[1;31m是粗体红色,\x1b[0m是重置样式,确保不影响后续输出 - 适合写进监控脚本,对不同关键词做差异化视觉提示
结构化输出 + jq + 高亮(适合深度分析)
当需要同时看字段和关键词时,先转 JSON 再处理:
journalctl -u redis.service -p warning -n 50 --output=json | jq -r '.MESSAGE' | grep --color=always -i "throttled\|slowlog\|oom"- 先用
--output=json提取结构化消息体,再用jq抽出 MESSAGE 字段,最后高亮语义关键词 - 避免日志前缀(如时间、服务名)干扰匹配,提高准确率
终端兼容性小提醒
某些终端(如 tmux、旧版 xterm)可能不默认支持颜色,可临时启用:
- 确保环境变量
TERM正确:运行echo $TERM,推荐值为xterm-256color或screen-256color - 若
grep --color=always无效,试试加GREP_COLORS='mt=1;31'强制启用 - 用
journalctl --no-pager配合高亮命令,防止分页器(less)吞掉颜色控制符











