Cronolog实现Nginx日志切割

前言

在我们的线上服务器上每天都会有上万条请求,显然,当请求越来越多时,日志文件也会越来越大,这时候就需要对日志进行切割。很遗憾,nginx自身并不能实现这种功能,所以我们要使用第三方工具-Cronolog来实现。

下载链接

操作步骤

安装配置cronolog

安装编译组件

[root@web1 ~]# yum groupinstall “Development tools”

编译安装

[root@web1 ~]# tar xf cronolog-1.6.2.tar.gz
[root@web1 ~]# cd cronolog-1.6.2
[root@web1 cronolog-1.6.2]# ./configure
[root@web1 cronolog-1.6.2]# make && make install

创建管道文件

[root@web1 ~]# mkfifo /data/logs/nginx/access_log_pipe

启动cronolog进行切割,这里我们是按天进行切割

按天切割使用如下命令

[root@web1 ~]# nohup cat /data/logs/nginx/access_logpipe | /usr/local/sbin/cronolog /data/logs/nginx/magedu.org.access%Y-%m-%d.log &

如按小时切割则使用如下命令

[root@web1 ~]# nohup cat /data/logs/nginx/access_logpipe | /usr/local/sbin/cronolog /data/logs/nginx/magedu.org.access%Y-%m-%d-%H.log &

注:此方法重启后失效,建议写入到启动项脚本。关于如何写这个脚本,将在后面的文章中写出

配置nginx

编辑nginx配置文件

[root@web1 ~]# vim /usr/local/nginx/conf/nginx.conf

1
2
3
4
5
6
7
8
9
http {

log_format main
'$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';

access_log /data/logs/nginx/access_log_pipe main;
}

启动nginx

[root@web1 ~]# /usr/local/nginx/sbing/nginx

验证配置

查看是否已经生成日志文件

[root@web1 ~]# ls /data/logs/nginx/
access_log_pipe magedu.org.access_2016-07-08.log

可以看到已经生成了按天进行切割的日志文件。

总结

Cronolog必须在nginx之前启动,关闭nginx之前记得要先关闭cronolog。

分享到 评论