在 Debian 系统中,日志主要由 rsyslog、systemd-journald 以及应用自身日志组成。下面从**常见日志位置、rsyslog 配置、日志轮转(logrotate)**几个方面说明如何配置和管理 Debian 日志。
默认日志一般位于 /var/log/:
/var/log/syslog # 系统日志(rsyslog)
/var/log/messages # 部分系统消息
/var/log/auth.log # 认证相关(SSH、sudo)
/var/log/kern.log # 内核日志
/var/log/dpkg.log # 软件包安装日志
/var/log/apt/ # apt 相关日志
/var/log/nginx/ # Nginx(如安装)
sudo apt update
sudo apt install rsyslog
/etc/rsyslog.conf
常用配置项:
# 加载模块
module(load="imuxsock")
module(load="imjournal")
# 日志规则文件
$IncludeConfig /etc/rsyslog.d/*.conf
在 /etc/rsyslog.d/ 下新建配置:
sudo vim /etc/rsyslog.d/10-custom.conf
示例:
# 所有日志写入自定义文件
*.* /var/log/all.log
# 只记录错误
*.err /var/log/error.log
# 忽略某些日志
mail.none
sudo systemctl restart rsyslog
journalctl
journalctl -xe
journalctl -u nginx
journalctl --since "2025-01-01" --until "2025-01-02"
/etc/systemd/journald.conf
常用配置:
[Journal]
Storage=persistent # 持久化(默认 /var/log/journal)
Compress=yes
SystemMaxUse=500M # 最大占用空间
RuntimeMaxUse=100M
修改后重启:
sudo systemctl restart systemd-journald
⚠️ journal 日志默认不自动轮转,靠空间限制控制。
/etc/logrotate.conf
/etc/logrotate.d/
示例(自定义日志轮转):
/var/log/all.log {
daily
rotate 7
compress
missingok
notifempty
create 0640 root adm
postrotate
systemctl reload rsyslog > /dev/null 2>&1 || true
endscript
}
sudo logrotate -d /etc/logrotate.conf
rsyslog 支持将日志发送到远程服务器:
*.* @@192.168.1.10:514
远程服务器需开启接收端口(TCP/UDP 514)。
systemctl status rsyslogsudo mkdir -p /var/log/journal
sudo systemctl restart systemd-journald
✅ 系统日志:rsyslog
✅ 服务日志:journalctl
✅ 日志轮转:logrotate
✅ 长期审计:开启 journald 持久化 + rsyslog 归档
如果你有具体需求(如:只记录 SSH 登录、Nginx 日志、Docker 日志、远程集中日志),可以告诉我,我可以给你一份可直接使用的配置示例。