背景
树莓派 raspbian 系统日志默认的配置会导致日志过大而占用太多的存储空间,并且频繁写日志也可能减短 EMMC 和 SD 卡的寿命,需要重新配置来满足项目的需求。
日志位置
/var/log
/var/log/syslog
/var/log/daemon.log
/var/log/mail.info
/var/log/mail.warn
/var/log/mail.err
/var/log/mail.log
/var/log/kern.log
/var/log/auth.log
/var/log/user.log
/var/log/lpr.log
/var/log/cron.log
/var/log/debug
/var/log/messages
配置 rsyslog
与 logrotate
rsyslog
的配置文件为 /etc/rsyslog.conf
, 找到其中 RULES
段
###############
#### RULES ####
###############
#
# First some standard log files. Log by facility.
#
auth,authpriv.* /var/log/auth.log
*.*;auth,authpriv.none -/var/log/syslog
#cron.* /var/log/cron.log
#daemon.* -/var/log/daemon.log
kern.* -/var/log/kern.log
lpr.* -/var/log/lpr.log
mail.* -/var/log/mail.log
user.* -/var/log/user.log
将其中 daemon.* -/var/log/daemon.log
行注释掉,syslog中已经包含 daemon 的日志。
修改 rsyslog
的 logrotate
配置 /etc/logrotate.d/rsyslog
/var/log/syslog
/var/log/daemon.log
{
rotate 3
daily
missingok
notifempty
nodelaycompress
compress
postrotate
invoke-rc.d rsyslog rotate > /dev/null
endscript
}
/var/log/mail.info
/var/log/mail.warn
/var/log/mail.err
/var/log/mail.log
/var/log/kern.log
/var/log/auth.log
/var/log/user.log
/var/log/lpr.log
/var/log/cron.log
/var/log/debug
/var/log/messages
{
rotate 3
weekly
missingok
notifempty
compress
nodelaycompress
sharedscripts
postrotate
invoke-rc.d rsyslog rotate > /dev/null
endscript
}
将 delaycompress
改为 nodelaycompress
,分割文件后立即压缩归档;另外 rotate
都设置为 3
立即测试一下配置
sudo /usr/sbin/logrotate /etc/logrotate.conf
写日志到内存
首先清空 /var/log
目录下面的日志(如果日志不多,可以不用清空)。
在 /etc/fstab
文件中添加以下内容, /var/log
最大可以使用 100MB 内存,也同时给其他常用的写目录/tmp
、/var/tmp
挂载到内存中。
tmpfs /var/log tmpfs defaults,noatime,nosuid,mode=0755,size=100m 0 0
tmpfs /tmp tmpfs defaults,noatime,nosuid,size=10m 0 0
tmpfs /var/tmp tmpfs defaults,noatime,nosuid,size=10m 0 0
重启系统或者手动挂载文件系统使之生效。