温馨提示×

linux syslog怎么配置

小樊
38
2026-07-15 13:18:38
栏目: 智能运维

Linux 的 syslog 配置主要指 rsyslog(目前主流发行版默认),下面按常见场景给你一个实用说明。


一、syslog 服务类型确认

先确认你用的是哪种 syslog:

ps -ef | grep syslog

常见情况:

  • rsyslog(CentOS 7/8、RHEL、Ubuntu、Debian)
  • syslog-ng(部分发行版)

下面示例以 rsyslog 为主。


二、rsyslog 主配置文件

1️⃣ 主配置文件路径

/etc/rsyslog.conf

2️⃣ 子配置目录(推荐方式)

/etc/rsyslog.d/*.conf

建议:自定义规则写到 /etc/rsyslog.d/


三、基本配置语法

规则格式

facility.priority    action

示例

*.info;mail.none;authpriv.none    /var/log/messages
authpriv.*                        /var/log/secure
cron.*                            /var/log/cron

四、常见 facility 和 priority

facility(来源)

facility 含义
auth / authpriv 认证
cron 定时任务
daemon 守护进程
kern 内核
mail 邮件
user 用户程序
local0–local7 自定义

priority(级别,从低到高)

priority 含义
debug 调试
info 信息
notice 注意
warning 警告
err 错误
crit 严重
alert 告警
emerg 紧急

info 表示 info 及以上级别


五、常见配置示例

1️⃣ 将所有日志写入一个文件

*.*    /var/log/all.log

⚠️ 不建议生产环境使用(日志量巨大)


2️⃣ 只记录错误及以上日志

*.err    /var/log/error.log

3️⃣ 自定义应用程序日志(local0)

local0.*    /var/log/myapp.log

应用侧示例(logger):

logger -p local0.info "this is a test log"

4️⃣ 远程 syslog 服务器

客户端配置

*.*    @192.168.1.10:514
  • @ → UDP
  • @@ → TCP

服务端开启接收

# /etc/rsyslog.conf
module(load="imudp")
input(type="imudp" port="514")

module(load="imtcp")
input(type="imtcp" port="514")

重启服务:

systemctl restart rsyslog

六、日志轮转(非常重要)

syslog 本身不负责轮转,由 logrotate 管理。

配置文件

/etc/logrotate.d/rsyslog

示例:

/var/log/myapp.log {
    daily
    rotate 7
    missingok
    notifempty
    compress
    postrotate
        systemctl reload rsyslog
    endscript
}

七、重启与验证

systemctl restart rsyslog
systemctl status rsyslog

测试:

logger "test syslog message"
tail -f /var/log/messages

八、常见问题

❓ 日志没生效

  • 配置写错
  • 没重启 rsyslog
  • SELinux 拦截(可临时测试 setenforce 0

❓ 日志写满磁盘

  • 没配置 logrotate
  • 使用了 *.*

九、不同系统差异

系统 默认
CentOS 7/8 rsyslog
Ubuntu rsyslog
Debian rsyslog
老系统 syslogd

如果你愿意,可以告诉我:

  • ✅ 你的 Linux 发行版
  • ✅ 想实现什么(本地 / 远程 / 应用日志 / 审计)

我可以给你一份可直接用的配置模板

0