Nginx系列3:nginx日志配置与日志切割

2019-04-01  本文已影响0人  joyitsai

1. 日志配置

我们观察nginx的server段,可以看到如下类似信息
#access_log logs/host.access.log main; 其中,access_log指令用于声明nginx日志的文件路径和日志格式。
这说明该server的访问日志的文件是 相对路径 logs/host.access.log ,使用的main格式:

查看配置文件,可以发现下面这段:

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

main格式是我们定义好一种日志的格式,并起个名字,便于引用:

默认的日志格式main

2. 日志切割

实际应用: shell+定时任务+nginx信号管理,完成日志按日期存储

(1) 凌晨02时00分, 把昨天的日志重命名,放在相应的目录下
(2) 再USR1信息号控制nginx重新生成新的日志文件

#!/bin/bash
base_path=/usr/local/nginx/logs
log_path=$(date -d yesterday +%Y%m)
day=$(date -d yesterday +%d)

#在logs/目录下,创建以`年月`命名的文件夹,存放当月的日志文件
mkdir -p $base_path/$log_path

#将logs/目录中的日志文件备份到 logs/年月文件夹/sccess_日.log的新日志文件中
mv $base_path/access.log  $base_path/$log_path/access_$day.log

#重新生成新的日志文件,当日日志到此切割一次
kill -USR1 `cat /usr/local/nginx/logs/nginx.pid`

要想.sh脚本每天在凌晨一点钟执行一次,完成当日的日志切割,就需要用crontab 编辑定时任务,每天02时00分(建议在02-04点之间,系统负载小):
0 2 */1 * * sh /xxx/path/logsback.sh

crontab文件的含义:

用户所建立的crontab文件中,每一行都代表一项任务,每行的每个字段代表一项设置,它的格式共分为六个字段,前五段是时间设定段,第六段是要执行的命令段,格式如下:
minute hour day month week command

其中:
minute: 表示分钟,可以是从0到59之间的任何整数。
hour:表示小时,可以是从0到23之间的任何整数。
day:表示日期,可以是从1到31之间的任何整数。
month:表示月份,可以是从1到12之间的任何整数。
week:表示星期几,可以是从0到7之间的任何整数,这里的0或7代表星期日。
command:要执行的命令,可以是系统命令,也可以是自己编写的脚本文件。

上一篇下一篇

猜你喜欢

热点阅读