nginx docker环境Logrotate日志切割

首先

如果宿主机安装了docker,他会在/etc/logrotate.d目录下生成一个nginx的文件

nginx和宿主机环境没啥区别,就是把那个执行的命令稍微改改就行了

PS:如果要看nginx的docker安装 https://blog.csdn.net/wu__peng/article/details/90904409

1,copy一个这个文件,改一个名字docker_nginx ,文件内容如下,经过了稍微修改

(下面那个nginx_01,是我的容器名字,自己弄得时候改成自己的就行;

/home/nginx/logs是我的日志存放路径。

)

/home/nginx/logs/*log {
    su root root
    create 0644 nginx nginx
    daily
    rotate 30
    missingok
    notifempty
    compress
    sharedscripts
    postrotate
         docker exec nginx_01 bash -c "if [ -f /run/nginx.pid ]; then kill -USR1 `docker exec nginx_01 cat /run/nginx.pid`; echo 日志打包完毕; fi"
    endscript
}

2,检测

logrotate -d -f /etc/logrotate.d/docker_nginx

3.执行(手动执行,不等到自动执行)

扫描二维码关注公众号,回复: 6646112 查看本文章

logrotate -f /etc/logrotate.d/docker_nginx

logrotate参数详解:

daily                     #指定转储周期为每天
weekly                    #指定转储周期为每周;
monthly                   #指定转储周期为每月;
rotate count              #指定日志文件删除之前转储的次数,0指没有备份,5指保留5个备份;
compress                  #通过gzip压缩转储以后的日志;
nocompress                #不需要压缩时,用这个参数;
delaycompress             #延迟压缩,和compress一起使用时,转储的日志文件到下一次转储时才压缩;
nodelaycompress           #覆盖delaycompress选项,转储同时压缩;
copytruncate              #用于还在打开中的日志文件,把当前日志备份并截断;
nocopytruncate            #备份日志文件但是不截断;
create mode owner group   #转储文件,使用指定的文件模式创建新的日志文件;
nocreate                  #不建立新的日志文件;
errors address            #专储时的错误信息发送到指定的Email地址;
ifempty                   #即使是空文件也转储,这个是logrotate的缺省选项;
notifempty                #如果是空文件的话,不转储;
mail address              #把转储的日志文件发送到指定的E-mail地;
nomail                    #转储时不发送日志文件;
olddir directory          #转储后的日志文件放入指定的目录,必须和当前日志文件在同一个文件系统;
noolddir                  #转储后的日志文件和当前日志文件放在同一个目录下;
prerotate/endscript       #在转储以前需要执行的命令可以放入这个对,这两个关键字必须单独成行;
postrotate/endscript      #在转储以后需要执行的命令可以放入这个对,这两个关键字必须单独成行;
tabootext [+] list        #让logrotate不转储指定扩展名的文件,缺省的扩展名是:.rpm-orig, .rpmsave,v,和~ ;
size size                 #当日志文件到达指定的大小时才转储,Size可以指定bytes(缺省)以及KB(sizek)或者MB(sizem);
postrotate <s> endscript  #日志轮换过后指定指定的脚本,endscript参数表示结束脚本;
sharedscripts             #共享脚本,下面的postrotate <s> endscript中的脚本只执行一次即可;

猜你喜欢

转载自blog.csdn.net/wu__peng/article/details/90754671