nginx日志自动切割有利于分析查看日志
- 1.日志配置
1
2
3
4
5
6
7access.log 记录哪些用户,哪些页面以及用户浏览器,IP等访问信息;
error.log 记录服务器错误的日志;
配置日志存储路径
location / {
access_log /usr/local/nginx/logs/access.log;
error_log /usr/local/nginx/logs/error.log;
}
nginx日志配置方法,默认已自动设置
2.日志切割
1
2
3
4
5
6
7
8#!/bin/bash
LOGS_PATH=/var/log/nginx/
YESTERDAY=$(date -d yesterday +"%Y%m%d") #,%Y-%m-%d等于%F
mv ${LOGS_PATH}/access.log ${LOGS_PATH}/logs/access_${YESTERDAY}.log
#mv ${LOGS_PATH}/error.log ${LOGS_PATH}/error_${YESTERDAY}.log
## 向 Nginx 主进程发送 USR1 信号。USR1 信号是重新打开日志文件
kill -USR1 `cat ${LOGS_PATH}/nginx.pid`
#kill -USR1 `cat /var/log/nginx/nginx.pid`3.设置定时任务
1
2
3
4crontab -e
每天凌晨1分执行
01 0 * * * /var/log/nginx/splitLog.sh
重启定时任务
补充
方式一:
- nginx cronolog日志分割配置文档,根据下面方法,每分钟分割一次NGINX访问日志。
1
2
3
4
5
6
7
81.nginx日志配置
access_log access_log /data/access_log_pipe main;
2.先创建一个命名管道
mkfifo /www/log/access_log_pipe
3.配置cronolog:
nohup cat /data/access_log_pipe | /usr/local/sbin/cronolog /data/log/domain.access_%Y%m%d%H%M.log &
4.启动Nginx
/usr/local/nginx/sbin/nginx
1 | 注意: |
方式二:
- 定时任务中每小时添加定时任务,执行一下脚本,可以实现小时日志分割。
1
2
3
4
5log_dir="/var/log/nginx"
date_dir=`date +%Y/%m/%d/%H`
/bin/mkdir -p ${log_dir}/${date_dir} > /dev/null 2>&1
/bin/mv ${log_dir}/access.log ${log_dir}/${date_dir}/access.log
kill -USR1 `cat /opt/nginx/logs/nginx.pid`
方式三:
- 使用logrotate做nginx日志轮询
1
2
3
4
5
6
7
8
9
10logrotate看名字就知道是专门做日志轮询的,只把任务配置放在/etc/logrotate.d/下,任务就会自动完成,而且无需安装,系统自带,比较推荐使用.
vim /etc/logrotate.d/nginx
/usr/local/nginx/logs/www.willko.cn.log /usr/local/nginx/logs/nginx_error.log {
notifempty
daily
sharedscripts
postrotate
/bin/kill -USR1 `/bin/cat /usr/local/nginx/nginx.pid`
endscript
}
多个日志以空格分开,
notifempty 如果日志为空则不做轮询
daily 每天执行一次
postrotate 日志轮询后执行的脚本
这样,每天都会自动轮询,生成nginx.log.1-n