syslog是Linux/Unix日志管理的核心框架,负责收集、路由、存储和转发内核及应用日志;其三层架构包括生产者(内核/printk、应用/syslog)、守护进程(rsyslog等)和消费者(文件/远程服务器),依托facility与severity标签实现精准路由,并与journald协同分工。

Linux 系统日志管理依赖 syslog 服务作为中枢,它不是单一程序,而是一套标准化协作机制——把分散的日志源头统一接入、分类、存储或转发。
syslog 的三层角色分工
日志流动遵循清晰的职责划分:
-
生产者:内核(通过
printk写入 ring buffer)、用户态程序(调用syslog()函数)、系统服务(如 sshd、cron)主动发送日志; -
守护进程:rsyslog(主流)、syslog-ng 或传统 syslogd,监听
/dev/log套接字、/proc/kmsg或 UDP/TCP 514 端口,执行解析、过滤与路由; -
消费者:本地文件(如
/var/log/messages)、远程服务器、数据库、甚至控制台或邮件系统。
设施(Facility)与级别(Severity)是路由基础
每条日志消息都带两个关键标签,决定它“从哪来”和“有多重要”:
Zynq‑7000 / Zynq UltraScale+ 硬件调试技能。适用于 Xilinx Zynq(Cortex‑A9/A53 + FPGA)Linux 环境,调试 I2C、I2S、UART、GPIO 等外设。包括设备树配置、内核驱动、用户空间调试工具、交叉编译和常见问题排查,支持 PetaLinux 开发。
-
Facility 标识来源类型,常见值包括
auth(认证)、kern(内核)、mail、daemon、local0–local7(自定义应用); -
Severity 表示严重程度,从高到低为
emerg>alert>crit>err>warning>notice>info>debug; - 配置中常用
auth.info表示 auth 设施中 info 及更严重级别的日志,mail.!info表示 mail 设施中排除 info 级别的所有日志。
核心功能不止于写文件
现代 syslog 守护进程(尤其是 rsyslog)提供远超基础记录的能力:
- 按规则将不同来源/级别的日志分发到不同文件,例如把
kern.warn单独存入/var/log/kern_warn.log; - 通过 TCP 或 TLS 加密转发日志到远程中心服务器,支持可靠传输与安全审计;
- 使用模板定制日志格式(如添加主机名、时间戳、进程 ID),适配 SIEM 工具解析;
- 结合过滤器实现条件路由,例如只将含 “Failed password” 的 auth 日志发往告警通道。
与 systemd-journald 的关系需理清
在启用 systemd 的系统中,journald 默认接管内核和大部分服务日志:
- journald 可以把日志转发给 rsyslog(通过
ForwardToSyslog=yes),让后者继续做归档或转发; - rsyslog 也能直接读取
/run/systemd/journal/syslog获取结构化日志; - 二者不是替代关系,而是协作:journald 擅长实时检索与二进制存储,rsyslog 擅长长期归档、过滤与跨网络分发。

















