syslog
100%

日志 · 第 2 课

syslog

学习 syslog 的设施、严重级别、路由规则以及 logger 命令如何工作。

Syslog 定义了许多类 Unix 系统采用的消息模型和传输惯例。Rsyslog 是其中一种实现,可以接收、过滤、转换、存储和转发消息。它可以与 systemd-journald 共存;无论哪一个名称,都不意味着每个应用程序都使用这条路径。

设施与严重级别

一条 syslog 消息带有设施字段,用来描述大致来源类别,同时带有从紧急到调试的严重级别。常见设施包括 authcrondaemonkernmailuser,以及 local0local7

严重级别具有顺序。在经典选择器语法中,daemon.warning 通常会匹配 daemon 设施中 warning 及所有更严重级别的消息,而不只是 warning。支持经典语法的实现可以使用等号修饰符进行精确匹配,例如 daemon.=warning

daemon.warning 这样的经典选择器通常匹配什么?

阅读 rsyslog 规则

Rsyslog 通常加载一个主文件和 /etc/rsyslog.d/ 下的配置片段。传统规则由选择器和其后的操作组成:

auth,authpriv.*          /var/log/auth.log
*.*;auth,authpriv.none  -/var/log/syslog
kern.*                  /var/log/kern.log

第一行路由两个身份验证设施的所有优先级。第二行广泛选择消息,但排除这两个设施。第三行路由内核设施消息。文件操作前的 - 通常表示请求异步写入,并不表示排除。

更改生产环境路由前,应检查所有被包含的文件,并验证已安装版本所用的确切语法。

在传统 rsyslog 规则中,哪一部分是操作?

发送测试消息

使用 logger 提交一条带有可识别标签和优先级的受控测试消息:

$ logger -p user.notice -t lesson-test 'routing check 2026-08-31T10:00'

然后查询预期目的地,例如:

$ journalctl -t lesson-test --since '5 minutes ago'

根据转发和路由配置,同一个事件可能同时出现在 journal 和文本文件中。logger -s 还会将消息复制到标准错误,但这不能证明消息已被持久存储。

logger -t lesson-test 会向提交的消息添加什么?

更改并验证路由

更改前,应保存当前配置并确定下游使用者。使用当前实现的配置检查模式验证语法,通常为:

$ sudo rsyslogd -N1

只有验证通过后,才能通过服务管理器重新加载服务。发送一条新的带标签消息,验证每个必需目的地,并检查服务状态和内部错误日志。语法有效的规则仍可能路由范围过宽、产生重复记录或暴露敏感数据。

日志跨越不可信网络时,远程转发应使用经过身份验证的加密传输。UDP 传送没有端到端确认;关键审计要求需要采用能够处理队列、丢失、完整性、访问控制和接收端中断的设计。

什么足以证明新路由规则可以正常工作?

课程已完成

你已完成 syslog

现在,你可以从消息元数据一直测试到 syslog 配置的目的地。

  • 区分设施与有序的严重级别。

  • 分别阅读选择器及其操作。

  • 使用 logger 发送带标签和优先级的事件。

  • 验证配置,并端到端确认传送结果。

保存学习进度

创建免费账户即可保存本课进度,并在任意设备上继续学习。

创建免费账户
下一节
返回 日志