logger是linux中向系统日志写入消息的命令行工具,通过syslog服务(如rsyslog)统一处理,默认记录到/var/log/syslog或/messages,支持指定facility.level优先级、标签(-t)、pid(-i)及远程发送等。

在 Linux 中,logger 命令可以将自定义消息发送到系统日志(通常是 /var/log/syslog 或 /var/log/messages),无需直接操作日志文件,由 rsyslog 或 syslog-ng 后台服务统一处理。
基本用法:发送普通错误消息
默认情况下,logger 以 user.notice 级别记录消息。要写入错误(error)级别,需显式指定优先级:
-
logger -p user.err "Failed to start service"→ 记录为用户级错误 -
logger -t myscript -p local0.err "Connection timeout"→ 指定标签myscript和设施local0,便于过滤
常用设施(facility)和级别(priority)组合
日志条目由“设施.级别”构成,常见搭配有:
Zynq‑7000 / Zynq UltraScale+ 硬件调试技能。适用于 Xilinx Zynq(Cortex‑A9/A53 + FPGA)Linux 环境,调试 I2C、I2S、UART、GPIO 等外设。包括设备树配置、内核驱动、用户空间调试工具、交叉编译和常见问题排查,支持 PetaLinux 开发。
-
user.err:用户程序的错误(最常用) -
daemon.err:后台服务类错误 -
local0.err~local7.err:自定义应用专用,推荐用于脚本或服务 - 级别从低到高:
debug、info、notice、warning、err、crit、alert、emerg
结合 Shell 脚本捕获并记录错误
可在脚本中用 || 或 set -e 配合 logger 实现自动报错:
cp /tmp/file.txt /root/ || logger -t backup-script -p local1.err "Copy failed: $?"- 更健壮写法:
if ! cp /tmp/file.txt /root/; then logger -t backup-script -p local1.err "Copy failed with exit code $?" ; fi
验证日志是否写入成功
执行后立即查看对应日志文件(取决于系统配置):
- Debian/Ubuntu:
tail -n 1 /var/log/syslog | grep myscript - RHEL/CentOS:
tail -n 1 /var/log/messages | grep myscript - 使用 journalctl(若启用 systemd):
journalctl -t myscript -p err -n 5
注意:确保 rsyslog 服务正在运行(systemctl status rsyslog),且日志规则未屏蔽所用 facility。










