美文网首页
日志轮转之logrotate

日志轮转之logrotate

作者: 野草_疯长 | 来源:发表于2019-03-26 16:26 被阅读0次

      用linux自带的logrotate对进行容器中的nginx日志轮转,发现切割后日志依然往以前的日志中写,后来明白日志的写入是根据inode来进行的,不管日志文件是重命名还是移动位置,都不会对日志的写入造成影响。

一般nginx容器都自带的有nginx日志轮转配置   位置(容器中):/etc/logrotate.d/nginx

/alidata2/nginx/log/*.log {      #此处为需要切割的日志的位置

        daily

        missingok

        rotate 7

        dateext

#        compress

        delaycompress

        notifempty

        create 640 nginx adm

        sharedscripts

        postrotate

                if [ -f /var/run/nginx.pid ]; then

                        kill -USR1 `cat /var/run/nginx.pid`

                fi

        endscript

}

下面是/etc/logrotate.conf配置详解

在该配置文件中,每个参数作用如下:

/var/log/nginx/为nginx日志的存储目录,可以根据实际情况进行修改。

daily:日志文件将按天轮循。

weekly:日志文件将按周轮循。

monthly:日志文件将按月轮循。

missingok:在日志轮循期间,任何错误将被忽略,例如“文件无法找到”之类的错误。

rotate 7:一次存储7个日志文件。对于第8个日志文件,时间最久的那个日志文件将被删除。

dateext:定义日志文件后缀是日期格式,也就是切割后文件是:xxx.log-20160402.gz这样的格式。如果该参数被注释掉,切割出来是按数字递增,即前面说的 xxx.log-1这种格式。

compress:在轮循任务完成后,已轮循的归档将使用gzip进行压缩。

delaycompress:总是与compress选项一起用,delaycompress选项指示logrotate不要将最近的归档压缩,压缩将在下一次轮循周期进行。这在你或任何软件仍然需要读取最新归档时很有用。

notifempty:如果是空文件的话,不进行转储。

create 640 nginx adm:以指定的权限和用书属性,创建全新的日志文件,同时logrotate也会重命名原始日志文件。

postrotate/endscript:在所有其它指令完成后,postrotate和endscript里面指定的命令将被执行。在这种情况下,rsyslogd进程将立即再次读取其配置并继续运行。注意:这两个关键字必须单独成行。

在 容器中:  /etc/crontab 添加如下内容

59 23 * * *   /usr/sbin/crontab  -f /etc/crontab.d/nginx        #强制执行切割任务

00 00 * * *  kill  -USER $(cat  /var/run/nginx.pid)           #重新打开nginx日志文件,避免日志写入旧log文件。

如果发现计划任务没有执行,可以查看crontab是否启动成功

/etc/init.d/cron status  #查看状态

/etc/init.d/cron start  #启动crontab

容器一般与本地(亚洲上海)相差8小时,所以在本地看到的日志记录的时间会相差8小时,这就需要在容器中更改时间

因为权限问题,正常办法无法更改,在此推荐2种办法:

1、docker cp /etc/localtime    nginx(容器名或者ID):/etc/localtime   #本地时间替换掉容器的时区

2、docker exec -it nginx bash #进入容器

       cd /usr/share/zoneinfo/Asia    #这里有很多时区

       cp  ./Shanghai      /etc/localtime #替换掉原有时区

到此结束。

相关文章

  • Nginx目录

    Nginx日志轮转,用于logrotate服务的日志切割 /etc/logrotate.d/nginx Nginx...

  • 日志轮转之logrotate

    用linux自带的logrotate对进行容器中的nginx日志轮转,发现切割后日志依然往以前的日志中写,后...

  • Linux日志管理:

    rsyslog 系统日志管理 logrotate日志轮转 rsyslog部分: rsyslog是系统专职日志程序,...

  • 对docker容器产生的日志做轮转

    logrotate是Linux系统的日志轮转程序,能够对系统产生的日志自动管理logrotate配置文件在/etc...

  • rsyslog和logrotate的使用

    日志轮转logrotate的使用 参考文档: https://blog.huoding.com/2013/04/...

  • nginx 常用命令

    /etc/logrotate.d/nginx nginx日志轮转配置文件 /usr/sbin/logrotat...

  • 自动日志轮转(logrotate)

    背景 在编写脚本或者运行项目的时候,一般都需要在适当的地方做日志输出,方便在出问题或者有需要的时候可以快速定位代码...

  • 使用logrotate进行日志轮替

      logrotate是一个日志文件管理工具。用来把旧文件轮转、压缩、删除,并且创建新的日志文件。我们可以根据日志...

  • CentOS 7下使用Logrotate管理日志

    Logrotate是一个日志文件管理工具。用来把旧文件轮转、压缩、删除,并且创建新的日志文件。我们可以根据日志文件...

  • CentOS 7下使用Logrotate管理日志

    Logrotate是一个日志文件管理工具。用来把旧文件轮转、压缩、删除,并且创建新的日志文件。我们可以根据日志文件...

网友评论

      本文标题:日志轮转之logrotate

      本文链接:https://www.haomeiwen.com/subject/whxnvqtx.html