应使用 journalctl -p 或 dmesg -l 按真实优先级筛选:journalctl -p err 查错误及以上,-p warning 查警告及以上,-p err..warning 查二者之间;dmesg -l err,warn 查内核错误和警告,缩写必须小写无空格;grep "error" 仅匹配文本内容,不反映实际日志级别。

直接用 journalctl -p 或 dmesg -l 按真实日志级别筛选,而不是靠关键词“error”“warning”模糊匹配——因为日志内容里出现这些词,不等于它就是对应严重级别的记录。
查 systemd 日志里的 err/warning 级别
systemd 日志每条都带标准 PRIORITY 字段(0–7 整数),-p 参数专为此设计:
-
只看错误及更高级别(emerg/alert/crit/err):
journalctl -p err -
只看警告及以上(warn/notice/info/debug 不显示):
journalctl -p warning -
查错误到警告之间的全部(含 err、warning):
journalctl -p err..warning -
想确认某条日志的真实级别:加
-o verbose查 PRIORITY 值,比如PRIORITY=3就是 err 级
查内核日志(dmesg)里的 err/warning
内核日志走 printk 机制,dmesg -l 支持按标准缩写过滤,注意必须用小写缩写、不能加空格:
Zynq‑7000 / Zynq UltraScale+ 硬件调试技能。适用于 Xilinx Zynq(Cortex‑A9/A53 + FPGA)Linux 环境,调试 I2C、I2S、UART、GPIO 等外设。包括设备树配置、内核驱动、用户空间调试工具、交叉编译和常见问题排查,支持 PetaLinux 开发。
-
只显示错误和警告:
dmesg -l err,warn -
只显示紧急和严重错误:
dmesg -l emerg,crit -
可用缩写只有:
emerg、alert、crit、err、warn、notice、info、debug(别写 error 或 warning)
别踩坑:为什么 grep "error" 不等于查 err 级日志
文本日志(如 /var/log/messages)里写的 “error” 是普通字符串,不是 syslog 协议定义的优先级字段:
- 一条 info 级日志 可能写 “connect failed: error 111” ——
grep error会抓到,但它根本不该算错误事件 - 一条真正的 err 级日志 可能只写 “disk timeout”,没出现 “error” 字样 ——
grep error反而漏掉 - rsyslog 写入时可能加前缀(如 “ERR device timeout”),但格式不统一,不可靠
补充技巧:快速定位 + 实时跟踪
结合时间、服务等条件,让筛选更精准:
-
只看 nginx 服务今天的错误:
journalctl -u nginx --since today -p err -
实时监控内核警告以上消息:
dmesg -l warn,emerg,crit,err -w -
查当前启动中的所有错误:
journalctl -b -p err










