nginx日志分割
nginx作为反向代理服务器,每天的日志量是非常大的,而日志也是查看管理程序的关键,如果只用单个日志文件势必会造成
查看起来很麻烦。这是就需要对nginx产生的日志进行分割,具体方法如下。
修改conf/nginx.conf文件,自定义输出的日志格式,地址及名称,部分改动如下:
http { include mime.types; default_type application/octet-stream; log_format main '$remote_addr - $remote_user [$time_local] "$request" ' '$status $body_bytes_sent "$http_referer" ' '"$http_user_agent" "$http_x_forwarded_for"'; #将日志保存到logs/test1.log下 access_log logs/test1.log main;
创建日志文件的目录
[root@localhost nginx]# mkdir datalogs
编写shell脚本用来将日志文件定时改名并备份到指定目录 ,在sbin下创建log.sh脚本如下
#安装nginx的基目录 BASE_DIR=/usr/local/nginx #当前日志文件的文件名 BASE_FILE_NAME=test1.log #当前日志文件的路径 CURRENT_PATH=$BASE_DIR/logs #备份文件路径 BAK_PATH=$BASE_DIR/datalogs #当前文件全路径 CURRENT_FILE=$CURRENT_PATH/$BASE_FILE_NAME #备份时间 BAK_TIME=`/bin/date -d yesterday +%Y%m%d%H%M` #备份文件全路径 BAK_FILE=$BAK_PATH/$BAK_TIME-$BASE_FILE_NAME echo $BAK_FILE #停止nginx服务 $BASE_DIR/sbin/nginx -s stop #将当前日志文件重命名并移动到指定地址 mv $CURRENT_FILE $BAK_FILE #开启Nginx服务 $BASE_DIR/sbin/nginx
更改log.sh shell脚本权限为对所有用户可读可写可执行
[root@localhost sbin]# chmod 777 log.sh
crontab -e定时执行shell命令,每分钟执行一次shell命令(备份操作)
*/1 * * * * sh /usr/local/nginx/sbin/log.sh
备份成功如下: