在 Linux 中配置 syslog 主要取决于你使用的是 rsyslog(最常见)还是 syslog-ng。下面以 rsyslog 为主,系统地说明如何配置。
ps -ef | grep syslog
常见情况:
/usr/sbin/rsyslogd → rsyslog/usr/sbin/syslog-ng → syslog-ng目前大多数发行版(CentOS 7+/RHEL/Ubuntu)默认使用 rsyslog。
/etc/rsyslog.conf
/etc/rsyslog.d/*.conf
建议把自定义规则放到
/etc/rsyslog.d/,不要直接改主配置文件。
# 加载模块
module(load="imuxsock")
module(load="imjournal")
# 全局配置
global(workDirectory="/var/lib/rsyslog")
# 规则
*.info;mail.none;authpriv.none;cron.none /var/log/messages
authpriv.* /var/log/secure
mail.* -/var/log/maillog
cron.* /var/log/cron
*.emerg :omusrmsg:*
facility.priority action
常见:
auth / authpriv:认证cron:定时任务daemon:守护进程kern:内核mailuserlocal0 ~ local7(常用于应用程序)从低到高:
debug
info
notice
warning / warn
err / error
crit
alert
emerg / panic
示例:
*.info:所有 info 及以上mail.err:仅 mail 的错误local0.debug:debug 及以上| 动作 | 示例 |
|---|---|
| 文件 | /var/log/app.log |
| 异步写 | -/var/log/app.log |
| 远程 | @192.168.1.10 |
| 用户 | :omusrmsg:root |
vim /etc/rsyslog.d/myapp.conf
local0.* /var/log/myapp.log
应用示例(发送日志):
logger -p local0.info "myapp test log"
module(load="imfile")
input(type="imfile"
File="/var/log/myapp.log"
StateFile="myapp.log.state"
Tag="myapp")
通常配合 logrotate 使用。
编辑 /etc/rsyslog.conf:
module(load="imudp")
input(type="imudp" port="514")
module(load="imtcp")
input(type="imtcp" port="514")
重启:
systemctl restart rsyslog
客户端发送:
*.* @@192.168.1.10:514
| 文件 | 内容 |
|---|---|
/var/log/messages |
系统通用日志 |
/var/log/secure |
认证、SSH |
/var/log/cron |
定时任务 |
/var/log/dmesg |
内核启动 |
/var/log/syslog |
Ubuntu 常见 |
systemctl restart rsyslog
systemctl enable rsyslog
systemctl status rsyslog
logger "test syslog message"
tail -f /var/log/messages
ss -lunp | grep 514
配置文件:
/etc/syslog-ng/syslog-ng.conf
示例:
source s_src { system(); internal(); };
destination d_file { file("/var/log/my.log"); };
log { source(s_src); destination(d_file); };
如果你愿意,可以告诉我:
我可以给你 完全贴合你环境的配置示例。