使用docker部署nginx,查看我的上篇文章: docker安装nginx,并进行数据卷挂载
docker容器内是没有logrotate服务的,我们可以使用宿主机内的的logrotate.
1.检测是否安装logrotate
一般Linux服务器都自己安装了
[root@wss ~]# rpm -qa logrotate
编辑
出现结果则表示安装了【倘若没有安装,就自行安装:yum install -y logrotate】
2.编写文件
[root@wss ~]# cd /etc/logrotate.d
[root@wss ~]# vim nginx
编辑内容如下
注释:
- /mydata/nginx/logs/*.log 表示docker挂载的数据卷地址
- /mydata/nginx/logs/old 表示生成切割日志的地址
-命令注释,如下
3.检测配置文件是否有问题
编写完配置文件应该进行检测,编写是否正确
[root@wss ~]# logrotate -d /etc/logrotate.d/nginx
编辑
输出的结果中,没有error字样就是没问题,要是有error就解决error,提示很明确,根据提示修改即可。
4.测试
检测没问题,进行测试。
[root@wss ~]# logrotate -f /etc/logrotate.d/nginx
会发现,在 /mydata/nginx/logs/old 文件下生成了文件。
注释:
- 此时的文件名,并不是按照时间命名的,但只要生成了文件,则说明没问题。
- 该命令可多次测试,前提确保/mydata/nginx/logs 目录下有access.log或error.log文件。
5.设置定时任务
logrotate默认执行时间是一周一次,所以你就算设置了每天切割也不会执行,所有我们需要另外写定时切割
[root@wss ~]# echo "59 23 * * * /usr/sbin/logrotate -f /etc/logrotate.d/nginx >/dev/null 2>&1" > /etc/crontab
[root@wss ~]# cat /etc/vrontab # 查看刚刚编写的定时任务【想修改,可以使用vim进行修改】
到此,简单的日志切割就完成了!!!
注释:
- 此处设置的是明天晚上23:59 进行日志的切割
- 时间自定义格式