使用logrotate对宝塔的网站日志进行自动切割
默认情况下,宝塔的 WEB 软件记录日志时,不会按日期将日志储存到不同的文件里,长时间的日志都记录到一个文件里,很不方便查阅和管理。
一、安装 logrotate
大多 Linux 系统一般都自带 logrotate,如果刚好你的系统没有自带,可以在github下载源代码进行编译安装。
或者直接尝试用命令进行安装,例如:
- 红帽系统(Red Hat):
yum install logrotate
或dnf install logrotate
- 乌班图(Ubuntu):
sudo apt-get install logrotate
或apt install logrotate
二、原理
其实“切割”二字并不对,具体我们来简单说说个人理解的工作原理。
1.logrotate
执行时,会对符合配置里设定的条件的文件进行处理。
2.然后重命名日志文件,并创建新的日志文件。
3.执行其它操作,如:压缩文件。
三、配置
新建并编辑配置文件
sudo vim /etc/logrotate.d/btweblogs
配置内容
/www/wwwlogs/*.log {
# 间隔时间:daily=每天/weekly=每周/monthly=每月/yearly=每年
daily
# 保留份数,超过该数量的旧日志自动删除
rotate 14
# 忽略错误,如:文件不存在
missingok
# 使用日期格式重命名文件
dateext
# 对分离出来的文件进行压缩
compress
# 不压缩本次分离出来的文件
delaycompress
# 忽略空文件(即不分离空的文件)
notifempty
# 多个文件分离后只执行一次脚本
sharedscripts
# 文件分离后执行的脚本
postrotate
# 通知Nginx和Apache程序重载
# Nginx
[ -e /www/server/nginx/logs/nginx.pid ] && kill -USR1 `cat /www/server/nginx/logs/nginx.pid`
# Apache
[ -e /www/server/apache/logs/httpd.pid ] && kill -USR1 `cat /www/server/apache/logs/httpd.pid`
endscript
}
四、结束
logrotate 除了可以分离压缩文件,还可以将分离出来的文件通过邮件发送到指定邮箱,具体方法可以查阅 logrotate 的手册。
宝塔本身也有日志切割功能,如果没有压缩之类的需求,可以使用宝塔的功能。
我用宝塔定时任务执行shell脚本实现的“日志切割”
我研究完 logrotate 才发现宝塔有自带