Linux 的 syslog 配置主要指 rsyslog(目前主流发行版默认),下面按常见场景给你一个实用说明。
先确认你用的是哪种 syslog:
ps -ef | grep syslog
常见情况:
下面示例以 rsyslog 为主。
/etc/rsyslog.conf
/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 | 含义 |
|---|---|
| auth / authpriv | 认证 |
| cron | 定时任务 |
| daemon | 守护进程 |
| kern | 内核 |
| 邮件 | |
| user | 用户程序 |
| local0–local7 | 自定义 |
| priority | 含义 |
|---|---|
| debug | 调试 |
| info | 信息 |
| notice | 注意 |
| warning | 警告 |
| err | 错误 |
| crit | 严重 |
| alert | 告警 |
| emerg | 紧急 |
✅ info 表示 info 及以上级别
*.* /var/log/all.log
⚠️ 不建议生产环境使用(日志量巨大)
*.err /var/log/error.log
local0.* /var/log/myapp.log
应用侧示例(logger):
logger -p local0.info "this is a test log"
*.* @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
setenforce 0)*.*| 系统 | 默认 |
|---|---|
| CentOS 7/8 | rsyslog |
| Ubuntu | rsyslog |
| Debian | rsyslog |
| 老系统 | syslogd |
如果你愿意,可以告诉我:
我可以给你一份可直接用的配置模板。