Nginx的日志切割
Nginx的日志切割
藍(lán)隊(duì)云小課堂:
問題描述
nginx默認(rèn)沒有提供對日志文件的分割功能,所以隨著時(shí)間的增長,access.log和error.log文件會(huì)越來越大,本文主要介紹了分割nginx日志的實(shí)現(xiàn)
解決辦法
? 寫一個(gè)腳本,去切分日志
? 使用crontab寫一個(gè)定時(shí)任務(wù),每天切一個(gè)。
1. 新建切割日志的腳本/opt/sh/cutlogs.sh
#!/bin/bash
# 指定日志和切割后日志備份的目錄
YEAR=$(date +%Y)
MONTH=$(date +%m)
DAY=$(date +%d)
YESTERDAY=$(date -d "yesterday" +%Y-%m-%d)
LOGS_PATH=/data/docker/saber/logs
LOGS_BAK_PATH=/data/docker/saber/logs-bak
# 得到1級目錄名
if [[ $(($DAY)) -eq 1 ]]
then
if [[ $(($MONTH)) -eq 1 ]]
then
LOGS_BAK_PATH=$LOGS_BAK_PATH/$((${YEAR}-1))-12
else
if [[ $(($MONTH)) -gt 10 ]]
then
LOGS_BAK_PATH=$LOGS_BAK_PATH/${YEAR}-$((${MONTH}-1))
else
LOGS_BAK_PATH=$LOGS_BAK_PATH/${YEAR}-0$((${MONTH}-1))
fi
fi
else
LOGS_BAK_PATH=$LOGS_BAK_PATH/${YEAR}-${MONTH}
fi
# 創(chuàng)建目錄
mkdir -p $LOGS_BAK_PATH/${YESTERDAY}
# 復(fù)制當(dāng)前的日志文件到備份的目錄
cp ${LOGS_PATH}/access.log ${LOGS_BAK_PATH}/${YESTERDAY}/access_${YESTERDAY}.log
#cp ${LOGS_PATH}/admin_access.log ${LOGS_BAK_PATH}/${YESTERDAY}/admin_access_${YESTERDAY}.log
cp ${LOGS_PATH}/error.log ${LOGS_BAK_PATH}/${YESTERDAY}/error_${YESTERDAY}.log
# 清空日志
> ${LOGS_PATH}/access.log
#> ${LOGS_PATH}/admin_access.log
> ${LOGS_PATH}/error.log
2. 建立計(jì)劃任務(wù)
crontab -e
# 寫入以下內(nèi)容
0 1 * * * sh /opt/sh/cutlogs.sh >> /opt/sh/cutlogs.log
更多小知識,可聯(lián)系藍(lán)隊(duì)云一起探討。