在 Ubuntu 中,syslog 通常由 rsyslog(默认)或 syslog-ng 提供。下面以最常用的 rsyslog 为例,讲清楚“怎么配置”。
ps -ef | grep rsyslog
# 或
systemctl status rsyslog
如果看到 rsyslogd 在运行,就是 rsyslog。
| 文件 / 目录 | 作用 |
|---|---|
/etc/rsyslog.conf |
主配置文件 |
/etc/rsyslog.d/*.conf |
子配置文件(推荐在这里改) |
/var/log/ |
日志存放目录 |
<设备>.<优先级> <动作>
设备(facility)示例
auth, authprivcrondaemonkernmailuser*(所有)优先级(severity)
debug < info < notice < warning < err < crit < alert < emerg
示例
*.info;mail.none;authpriv.none /var/log/messages
authpriv.* /var/log/secure
sudo vim /etc/rsyslog.d/10-myapp.conf
# 来自 myapp 的日志
local0.* /var/log/myapp.log
程序里用 local0 设备写日志即可。
*.err /var/log/error.log
*.info /var/log/info.log
服务端(接收日志)
sudo vim /etc/rsyslog.conf
取消注释:
module(load="imudp")
input(type="imudp" port="514")
module(load="imtcp")
input(type="imtcp" port="514")
sudo systemctl restart rsyslog
客户端(发送日志)
sudo vim /etc/rsyslog.d/20-remote.conf
*.* @@192.168.1.100:514
(@ = UDP,@@ = TCP)
sudo vim /etc/logrotate.d/rsyslog
示例:
/var/log/myapp.log {
weekly
rotate 4
compress
missingok
notifempty
}
sudo systemctl restart rsyslog
测试:
logger -p local0.info "test message"
tail -f /var/log/myapp.log
如果你用的是 syslog-ng:
/etc/syslog-ng//etc/syslog-ng/syslog-ng.confsudo rsyslogd -N1 # 检查配置语法
journalctl -u rsyslog
如果你能告诉我:
我可以给你更精确的配置模板。