1. 程式人生 > >日誌大了,怎麽辦?用我的日誌切割腳本吧!

日誌大了,怎麽辦?用我的日誌切割腳本吧!

fix ref str 觸發 body article ron left param

本文轉載自https://www.imooc.com/article/13260

分享一個腳本,它配合linux系統的crontab任務,對nginx自動日誌切割和清理,分別作用於ACCESS和ERROR的日誌。

特點:

1、功能豐富

應有的功能中,不僅支持按天切割,而且支持通過通過設置文件大小作切割。

2、通用

通用於nginx、tengine,通過簡單改進也能有好的支持切割清理httpd、lightd等其他Web server 日誌。

3、更加易於理解

用shell方式相對更加好理解,並且易於後續的維護和功能的添加。

好了,話不多說直接上腳本:

#!/bin/bash

#Jeson

#Email:[email protected]
#變量定義:access、error日誌文件列表 NGINX_LOG=(imoocc_com_access iaskjob_com error) NGINX_ACCESS_PATH=/opt/logs/nginx/access NGINX_ERROR_PATH=/opt/logs/nginx/error #日期變量 Ydate=`date -d yesterday +%Y%m%d` Adate=`date -d "20 days ago" +%Y%m%d` #PID文件和nginx.conf中定義一致 Nginxpid=/opt/app/nginx/nginx.pid #日誌的量,超過此值,觸發切割
Max_size=1000000 file_size="NULL" #函數Get_Size,獲取日誌文件的大小。 #rotate funcation function Get_Size(){ logfile=$1 file_size=`ls -l ${logfile}awk ‘{print $5}‘` if [[ $file_size =~ [1-9]* ]];then echo $file_size else echo "error:cant get file ${logfile} size!" exit fi }
#函數Log_Rotate,完成日誌輪轉切割。 # rename log function Log_Rotate(){ SIZE=$1 ACCESS_FILE=$2 BACK_DIR=$3 echo "==============$SIZE $ACCESS_FILE" if [ $SIZE == "NULL" ];then echo "######00000000" if [ ! -d ${BACK_DIR} ];then mkdir ${BACK_DIR} fi mv -f ${ACCESS_FILE} ${BACK_DIR}/${Ydate}.log touch ${ACCESS_FILE} rm ${BACK_DIR}/${Adate}.log elif [ $SIZE -gt $Max_size ];then echo "#######11111111" if [ ! -d ${BACK_DIR} ];then mkdir ${BACK_DIR} fi mv -f ${ACCESS_FILE} ${BACK_DIR}/${Ydate}.log touch ${ACCESS_FILE} rm ${BACK_DIR}/${Adate}.log fi } #主功能段,作用遍歷日誌,輸入參數為size,則按照size進行切割,如果為day,則按照日常輪轉進行。 for logname in ${NGINX_LOG[@]} do if [ ${logname} == ‘error‘ ];then LOG_FILE=${NGINX_ERROR_PATH}/${logname}.log BACK_DIR=${NGINX_ERROR_PATH}/${logname} else LOG_FILE=${NGINX_ACCESS_PATH}/${logname}.log BACK_DIR=${NGINX_ACCESS_PATH}/${logname} fi if [ $1 == "size" ];then file_size=`Get_Size ${LOG_FILE}` Log_Rotate ${file_size} ${LOG_FILE} ${BACK_DIR} echo $file_size elif [ $1 == "day" ];then Log_Rotate ${file_size} ${LOG_FILE} ${BACK_DIR} else echo "Param : $logname error!" fi done #給nginx發送一個信號量,讓nginx重載,重新重新生成日誌 ## restart nginx [ ! -f $Nginxpid ] kill -USR1 $(cat $Nginxpid)

分享一個腳本,它配合linux系統的crontab任務,對nginx自動日誌切割和清理,分別作用於ACCESS和ERROR的日誌。

特點:

1、功能豐富

應有的功能中,不僅支持按天切割,而且支持通過通過設置文件大小作切割。

2、通用

通用於nginx、tengine,通過簡單改進也能有好的支持切割清理httpd、lightd等其他Web server 日誌。

3、更加易於理解

用shell方式相對更加好理解,並且易於後續的維護和功能的添加。

好了,話不多說直接上腳本:


作者: 幕客技術
鏈接:https://www.imooc.com/article/13260
來源:慕課網
本文原創發布於慕課網 ,轉載請註明出處,謝謝合作!

分享一個腳本,它配合linux系統的crontab任務,對nginx自動日誌切割和清理,分別作用於ACCESS和ERROR的日誌。

特點:

1、功能豐富

應有的功能中,不僅支持按天切割,而且支持通過通過設置文件大小作切割。

2、通用

通用於nginx、tengine,通過簡單改進也能有好的支持切割清理httpd、lightd等其他Web server 日誌。

3、更加易於理解

用shell方式相對更加好理解,並且易於後續的維護和功能的添加。

好了,話不多說直接上腳本:


作者: 幕客技術
鏈接:https://www.imooc.com/article/13260
來源:慕課網
本文原創發布於慕課網 ,轉載請註明出處,謝謝合作!

分享一個腳本,它配合linux系統的crontab任務,對nginx自動日誌切割和清理,分別作用於ACCESS和ERROR的日誌。

特點:

1、功能豐富

應有的功能中,不僅支持按天切割,而且支持通過通過設置文件大小作切割。

2、通用

通用於nginx、tengine,通過簡單改進也能有好的支持切割清理httpd、lightd等其他Web server 日誌。

3、更加易於理解

用shell方式相對更加好理解,並且易於後續的維護和功能的添加。

好了,話不多說直接上腳本:


作者: 幕客技術
鏈接:https://www.imooc.com/article/13260
來源:慕課網
本文原創發布於慕課網 ,轉載請註明出處,謝謝合作!

分享一個腳本,它配合linux系統的crontab任務,對nginx自動日誌切割和清理,分別作用於ACCESS和ERROR的日誌。

特點:

1、功能豐富

應有的功能中,不僅支持按天切割,而且支持通過通過設置文件大小作切割。

2、通用

通用於nginx、tengine,通過簡單改進也能有好的支持切割清理httpd、lightd等其他Web server 日誌。

3、更加易於理解

用shell方式相對更加好理解,並且易於後續的維護和功能的添加。

好了,話不多說直接上腳本:


作者: 幕客技術
鏈接:https://www.imooc.com/article/13260
來源:慕課網
本文原創發布於慕課網 ,轉載請註明出處,謝謝合作!

分享一個腳本,它配合linux系統的crontab任務,對nginx自動日誌切割和清理,分別作用於ACCESS和ERROR的日誌。

特點:

1、功能豐富

應有的功能中,不僅支持按天切割,而且支持通過通過設置文件大小作切割。

2、通用

通用於nginx、tengine,通過簡單改進也能有好的支持切割清理httpd、lightd等其他Web server 日誌。

3、更加易於理解

用shell方式相對更加好理解,並且易於後續的維護和功能的添加。

好了,話不多說直接上腳本:


作者: 幕客技術
鏈接:https://www.imooc.com/article/13260
來源:慕課網
本文原創發布於慕課網 ,轉載請註明出處,謝謝合作!

日誌大了,怎麽辦?用我的日誌切割腳本吧!