在 Linux 中,syslog 并不是某一条命令,而是一整套日志服务。不同发行版和系统版本使用的实现不同,因此“开启 syslog”的方法也会不一样。下面按常见情况给你一个清晰、可直接操作的说明。
ps -ef | grep -E 'rsyslog|syslogd|syslog-ng'
或:
systemctl status rsyslog syslog-ng syslog 2>/dev/null
常见情况:
| 系统 | 常见日志服务 |
|---|---|
| CentOS 6 / RHEL 6 | syslog (syslogd) |
| CentOS 7+ / RHEL 7+ | rsyslog |
| Ubuntu / Debian | rsyslog |
| 新系统 | systemd-journald(不再用传统 syslog) |
rpm -qa | grep rsyslog # CentOS / RHEL
dpkg -l | grep rsyslog # Ubuntu / Debian
systemctl start rsyslog
systemctl enable rsyslog
systemctl status rsyslog
主配置文件:
/etc/rsyslog.conf
通常目录:
/etc/rsyslog.d/
示例规则:
*.info;mail.none;authpriv.none;cron.none /var/log/messages
authpriv.* /var/log/secure
修改后重启:
systemctl restart rsyslog
service syslog start
chkconfig syslog on
或(systemd):
systemctl start syslog
systemctl enable syslog
如果你看到的是 journald,那已经在工作了。
journalctl
journalctl -xe
journalctl -u sshd
编辑:
/etc/systemd/journald.conf
[Journal]
Storage=persistent
ForwardToSyslog=yes
然后:
systemctl restart systemd-journald
| 日志文件 | 说明 |
|---|---|
| /var/log/messages | 系统通用日志 |
| /var/log/secure | 认证、登录 |
| /var/log/syslog | Ubuntu 通用日志 |
| /var/log/cron | 定时任务 |
| /var/log/dmesg | 内核日志 |
logger "this is a test syslog message"
然后查看:
tail -f /var/log/messages
# 或
tail -f /var/log/syslog
CentOS 7+/Ubuntu:基本都是 rsyslog,直接
systemctl start rsyslog即可。
如果你愿意,可以告诉我:
cat /etc/os-release)我可以给你完全针对你环境的开启方案。