nginx日志分割

释放双眼,带上耳机,听听看~!

 nginx作为反向代理服务器,每天的日志量是非常大的,而日志也是查看管理程序的关键,如果只用单个日志文件势必会造成

查看起来很麻烦。这是就需要对nginx产生的日志进行分割,具体方法如下。

 修改conf/nginx.conf文件,自定义输出的日志格式,地址及名称,部分改动如下:


1
2
3
4
5
6
7
8
9
10
11
1http {
2    include       mime.types;
3    default_type  application/octet-stream;
4
5    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
6                      '$status $body_bytes_sent "$http_referer" '
7                      '"$http_user_agent" "$http_x_forwarded_for"';
8
9   #将日志保存到logs/test1.log下
10    access_log logs/test1.log main;
11

创建日志文件的目录


1
2
1[root@localhost nginx]# mkdir datalogs
2

编写shell脚本用来将日志文件定时改名并备份到指定目录 ,在sbin下创建log.sh脚本如下


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
1#安装nginx的基目录
2BASE_DIR=/usr/local/nginx
3
4#当前日志文件的文件名
5
6BASE_FILE_NAME=test1.log
7
8#当前日志文件的路径
9
10CURRENT_PATH=$BASE_DIR/logs
11
12#备份文件路径
13BAK_PATH=$BASE_DIR/datalogs
14
15#当前文件全路径
16
17CURRENT_FILE=$CURRENT_PATH/$BASE_FILE_NAME
18
19#备份时间
20BAK_TIME=`/bin/date -d yesterday +%Y%m%d%H%M`
21
22#备份文件全路径
23BAK_FILE=$BAK_PATH/$BAK_TIME-$BASE_FILE_NAME
24
25echo $BAK_FILE
26
27#停止nginx服务
28
29$BASE_DIR/sbin/nginx -s stop
30
31#将当前日志文件重命名并移动到指定地址
32
33mv $CURRENT_FILE $BAK_FILE
34
35#开启Nginx服务
36
37$BASE_DIR/sbin/nginx
38

 

更改log.sh shell脚本权限为对所有用户可读可写可执行


1
2
1[root@localhost sbin]# chmod 777 log.sh
2

crontab -e定时执行shell命令,每分钟执行一次shell命令(备份操作)


1
2
1*/1 * * * * sh /usr/local/nginx/sbin/log.sh
2

备份成功如下:

nginx日志分割

 

转载于:https://www.cnblogs.com/coder-lichao/p/10945933.html

给TA打赏
共{{data.count}}人
人已打赏
安全运维

WordPress网站专用docker容器环境带Waf

2020-7-18 20:04:44

安全运维

运维安全-Gitlab管理员权限安全思考

2021-9-19 9:16:14

个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索