温馨提示×

linux syslog和rsyslog区别

小樊
36
2026-10-04 17:39:51
栏目: 智能运维

在 Linux 系统中,syslog 和 rsyslog 经常被一起提到,但它们的含义和定位并不相同。下面从概念、关系、功能对比几个方面说明区别。


一、基本概念

1. syslog(协议 + 传统守护进程)

  • syslog 最早是 BSD 系统中的日志规范(RFC 3164,后来有 RFC 5424)。
  • 它包含两个含义:
    1. 日志协议:定义日志格式、设施(facility)、级别(severity)
    2. syslogd 守护进程:最早的日志服务程序(如 syslogd)
  • 传统 syslogd 功能非常简单:
    • 接收本地日志
    • 写入文件
    • 可转发到远程

2. rsyslog(增强版日志系统)

  • rsyslog = “reliable syslog”
  • 是 syslog 的增强替代实现
  • 完全兼容 syslog 协议
  • 现在是大多数 Linux 发行版(RHEL/CentOS/Ubuntu 等)的默认日志服务

二、核心区别对比

对比项 syslog(传统 syslogd) rsyslog
是否默认 老系统使用 现代 Linux 默认
协议兼容 syslog syslog(完全兼容)
配置复杂度 简单 功能强但配置稍复杂
远程日志 支持(基础) 支持(TCP/TLS/RELP)
性能 一般 高(队列、多线程)
输出目标 文件、远程 文件、远程、数据库、MQ 等
过滤能力 弱 强(基于表达式)
可靠性 可能丢日志 支持可靠传输

三、功能增强(rsyslog 独有)

rsyslog 在 syslog 基础上增加了:

  • 多线程处理
  • 日志队列(内存/磁盘)
  • TCP + TLS 加密日志传输
  • RELP 协议(不丢日志)
  • 模板(template)格式化日志
  • 写入数据库(MySQL / PostgreSQL)
  • 与 systemd journal 集成

示例:

*.* @@logserver.example.com:514

表示通过 TCP 发送所有日志。


四、和 systemd-journald 的关系

现代 Linux 通常是:

程序 → systemd-journald → rsyslog → /var/log/messages
  • journald:二进制日志,查询方便
  • rsyslog:传统文本日志,兼容旧系统

五、一句话总结

syslog 是日志标准和老实现,rsyslog 是 syslog 的现代、增强、默认实现。

如果你愿意,我也可以:

  • 对比 rsyslog vs syslog-ng
  • 给你一份 rsyslog 实战配置示例
  • 讲 如何排查日志不生效问题

0 踩