0%

Nginx-日志切割

nginx日志按天进行切割,通过写shell脚本,创建以日期命名文件


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
#!/usr/bin/env bash

set -e
# 定义nginx 日志路径
LOG_PATH="/var/gb/logs/"

# 定义nginx 访问日志文件名称
ACCESS_LOG="access.log"
ERROR_LOG="error.log"

for i in `find $LOG_PATH -name "$ACCESS_LOG"`; do
cd $(dirname $i)
# 切割access日志
if [[ -f $ACCESS_LOG ]]; then
cp {,$(date +%F)-}${ACCESS_LOG}
: > $ACCESS_LOG
fi

# 如果error日志>20m,切
if [[ -f $ERROR_LOG ]]; then
ERROR_SIZE=`ls -l $ERROR_LOG | awk '{ print $5 }'`
if [[ $ERROR_SIZE -gt 20971520 ]]; then
cp {,$(date +%F)-}${ERROR_LOG}
: > ${ERROR_LOG}
fi
fi
done

# 查找nginx 日志目录下7天前的日志并删除
find ${LOG_PATH} -type f -name "*-${ACCESS_LOG}" -mtime +7 -delete
find ${LOG_PATH} -type f -name "*-${ERROR_LOG}" -mtime +7 -delete