使用cronolog可以格式化日志文件的格式,比如按时间分割,易于管理和分析。
当apache日志太大了 也会严重影响服务器效率
cronolog的安装配置非常简单,简要说明如下:
1.下载软件
http://cronolog.org/download/index.html
2.解压缩
gzip -d cronolog-1.6.2.tar.gz
tar xf cronolog-1.6.2.tar
2.进入相应的目录./configure
3.make
4.make install
5.修改apache配置文件
自定义日志格式
CustomLog "|/usr/local/sbin/cronolog /opt/apache/logs/access_log.%Y%m%d" combined
如果在虚拟站点中也可以自定义日志的存放方式
我用的方式
CustomLog "|/usr/local/sbin/cronolog /usr/local/apache/logs/%Y%m%d/access_log.%Y%m%d.%H" combined
#每1个小时写1个log文件,自动删除log的文件在crontab -e配置
自动删除7天前的log脚本
用root帐号 crontab -e
然后输入
10 22 * * * /usr/local/apache/bin/rmlog.sh
然后esc shift+: x 回车保存文件
每天22点10分就会自动运行该脚本
rmlog.sh脚本代码
#!/bin/bash
shlog=/usr/local/apache/logs/sh.log
logpath="/usr/local/apache/logs/"
today=$(date +%Y%m%d)
file="access_log".$today
oldfile="$logpath"$(date +%Y%m%d --date='7 days ago')
echo $oldfile
#if [ -f $oldfile ]
#then
rm -rf $oldfile >>$shlog 2>&1
echo "[$(date +%Y%m%d)][$(date +%T)][$oldfile] Delete Success!">>$shlog
#else
# echo "[$(date +%Y%m%d)][$(date +%T)][$oldfile] No Old File!">>$shlog
#fi
这段脚本每次执行输出执行结果到一个sh.log文件中以让自己知道 执行结果
[root@server3 ~]# date 二 1月 9 09:47:22 CST 2007 [root@server3 ~]# /usr/local/ apache2/bin/httpd -v Server version: Apache/2.0.54 Server built: Sep 1 2006 16:58:34 [root@server3 ~]# CustomLog "|/usr/local/ apache2/bin/rotatelogs /usr/local/ apache2/logs/music-access_log.%Y%m%d 86400 480" combined TransferLog "|/usr/local/ apache2/bin/rotatelogs /usr/local/ apache2/logs/music-access_log.%Y%m%d 86400 480" |