在Ubuntu中设置日志保留策略,可以通过配置rsyslog或logrotate来实现。以下是两种方法的详细步骤:
rsyslog编辑 rsyslog 配置文件:
打开 /etc/rsyslog.conf 文件进行编辑。
sudo nano /etc/rsyslog.conf
配置日志轮转: 在文件末尾添加以下内容来配置日志轮转:
# 每天轮转一次日志
$SystemLogRateLimitInterval 24h
$SystemLogRateLimitBurst 5
# 日志文件路径和大小限制
$OmitLocalLogging on
$ActionFileDefaultTemplate RSYSLOG_TraditionalFileFormat
$IncludeConfig /etc/rsyslog.d/*.conf
# 日志文件保留策略
$FileCreateMode 0640
$DirCreateMode 0755
$Umask 0022
$PrivDropToUser syslog
$PrivDropToGroup adm
# 日志文件路径
local7.* /var/log/myapp.log
# 日志轮转配置
/var/log/myapp.log {
daily
rotate 7
compress
delaycompress
missingok
notifempty
create 0640 root adm
}
重启 rsyslog 服务:
保存并关闭文件后,重启 rsyslog 服务以应用更改。
sudo systemctl restart rsyslog
logrotate创建或编辑 logrotate 配置文件:
创建一个新的配置文件或编辑现有的配置文件,例如 /etc/logrotate.d/myapp。
sudo nano /etc/logrotate.d/myapp
配置日志轮转: 在文件中添加以下内容来配置日志轮转:
/var/log/myapp.log {
daily
rotate 7
compress
delaycompress
missingok
notifempty
create 0640 root adm
}
解释:
daily:每天轮转一次日志。rotate 7:保留7个轮转的日志文件。compress:压缩旧的日志文件。delaycompress:延迟压缩,直到下一次轮转。missingok:如果日志文件丢失,不会报错。notifempty:如果日志文件为空,不进行轮转。create 0640 root adm:创建新的日志文件,权限为0640,属主为root,属组为adm。测试 logrotate 配置:
可以手动测试 logrotate 配置是否正确。
sudo logrotate -f /etc/logrotate.d/myapp
设置定时任务:
logrotate 通常会自动运行,但你可以检查 /etc/cron.daily/logrotate 文件以确保定时任务正常运行。
sudo nano /etc/cron.daily/logrotate
确保文件中有以下内容:
#!/bin/sh
/usr/sbin/logrotate /etc/logrotate.conf
EXITVALUE=$?
if [ $EXITVALUE != 0 ]; then
/usr/bin/logger -t logrotate "ALERT exited abnormally with [$EXITVALUE]"
fi
exit 0
然后赋予执行权限:
sudo chmod +x /etc/cron.daily/logrotate
通过以上两种方法,你可以在Ubuntu中设置日志保留策略,确保日志文件不会无限增长,并且可以方便地进行管理和归档。