本文已同步到专业技术网站 www.sufaith.com, 该网站专注于前后端开发技术与经验分享, 包含Web开发、Nodejs、Python、Linux、IT资讯等板块.
nginx运行日志默认保存在nginx安装目录下的 /usr/local/nginx/logs 文件夹, 包含access.log和error.log两个文件.
(1) access.log 记录了哪些用户、哪些页面以及用户浏览器、ip和其他的访问信息;
(2) error.log 则是记录服务器错误日志.
在所有时间内nginx产生的日志均保存在同一个文件下, 随着访问量的增加,尤其是access.log增长极快,服务器会很快消耗磁盘空间,影响服务器效率。
另外,当需要对日志文件里面记录的数据进行分析时,每次都要耗时很久才能下载这个庞大的日志文件,浪费不必要的时间。
因此急需一个处理方案能够自动化的实现按天或者按文件大小来切割nginx日志记录.
logrotate是一个linux系统日志的管理工具。可以对单个日志文件或者某个目录下的文件按时间/大小进行切割,压缩操作;指定日志保存数量;还可以在切割之后运行自定义命令。
logrotate是基于crontab运行的,所以这个时间点是由crontab控制的,具体可以查询crontab的配置文件/etc/anacrontab。系统会按照计划的频率运行logrotate,通常是每天。在大多数的Linux发行版本上,计划每天运行的脚本位于 /etc/cron.daily/logrotate。
主流Linux发行版上都默认安装有logrotate包,如果你的linux系统中找不到logrotate, 可以使用apt-get或yum命令来安装。
接下来,我们查看logrotate的配置文件
使用指令:rpm -ql logrotate
由下图可知,logrotate的配置文件是 /etc/logrotate.conf, 这个文件用来定义全局默认参数。
其中, /etc/logrotate.d/ 是用于存储各种自定义应用的配置文件的目录。该目录里的所有文件都会被主动的读入到 /etc/logrotate.conf中执行。该目录下的应用配置文件继承所有/etc/logrotate.conf 的默认参数。
因此我们可以新建一个针对nginx日志文件的轮循配置的文件,然后将这个文件放在 /etc/logrotate.d/ 目录下, 它就会主动的读入到/etc/logrotate.conf中执行, 以达到按指定频率定时执行的需求。
(路径: /etc/logrotate.d/nginx )
新建nginx文件, 存放在/etc/logrotate.d/ 文件夹下, 内容如下
/usr/local/nginx/logs/access.log {
daily
rotate 7
missingok
dateext
compress
delaycompress
notifempty
sharedscripts
postrotate
[ -e /usr/local/nginx/logs/nginx.pid ] && kill -USR1 `cat /usr/local/nginx/logs/nginx.pid`
endscript
}
使用指令: logrotate/etc/logrotate.d/nginx
使用指令: logrotate -d /etc/logrotate.d/nginx
使用指令: logrotate -vf /etc/logrotate.d/nginx
至此, 我们使用logrotate配置的nginx日志切割功能已经实现了, 它会按照设定的频率定时的执行下去
。