Apache日志分割

Apache和Ngix一样,对日志没有进行分割处理,这样很不方便日志的管理,比如你想只保留最近一个星期的日志文件。另外,进行日志分割之后,也方便访问日志的分析处理和统计。参考网上的Apache日志分割方法和步骤,用一个bash脚本和任务计划进行每天的日志分割。

#!/bin/bash
LOG_PATH='/var/log/httpd/' #日志的路径
EXPIRED=7                       #保存7天前的日志
PID='/var/run/httpd.pid'    #httpd pid路径

if [ ! -d ${LOG_PATH}oldlog ]; then
mkdir ${LOG_PATH}oldlog
fi

datetime=$(date -d yesterday +%Y%m%d) #昨天的日期
logs=`find $LOG_PATH -maxdepth 1 -type f -name '*log'`

for log in $logs
do
fname=`echo $log | awk -F "/" '{print $NF}'`
mv ${log} ${LOG_PATH}oldlog/${datetime}"."${fname}
done

kill -USR1 $(cat ${PID})
find ${LOG_PATH}oldlog -type f -mtime +${EXPIRED} -exec rm -f {}
sleep 5

添加任务计划:0 0 * * * /usr/local/bin/Cutlog > /dev/null

每天的0点0分执行日志分割任务

需要注意的地方:kill -USR1 $(cat ${PID}) 给apache服务进程发送USR1信号,使其重新打开日志文件;否则,日志数据会继续写到重命名之后的文件里面。

此条目发表在web分类目录。将固定链接加入收藏夹。

发表评论

电子邮件地址不会被公开。 必填项已用*标注

This site uses Akismet to reduce spam. Learn how your comment data is processed.