• 欢迎访问VPS岛网站,国外VPS,国内VPS,国外服务器,国内服务器,服务器主机,测评及优惠码,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站 QQ群

【运维小分享】整理Apache日志

Apache技术 xierex 20次浏览 已收录 0个评论

网站的日志文件随着每天的访问记录积累,会越来越大,特别是大型网站。

日志越来越大不仅影响储存容量从而影响网站性能,而且对我们做日志分析造成困难。

因此,我要对日志进行规范整理。

 

方法一:使用rotatelogs实现log轮转

rotatelogs是一个配合Apache管道日志功能使用的简单程序。

 

PS:管道日志功能

Apache提供了不把日志直接写入文件,而是通过管道发送给另外一个程序的能力。这样就大大加强了对日志进行处理的能力。这个通过管道得到的程序可以是任意程序,如日志分析、压缩日志等。要实现将日志写到管道的操作,只需要将配置中日志文件部分的内容替换为”|程序名”即可,例如:

# compressed logs
$ CustomLog
"|/usr/bin/gzip -c >> /var/log/access_log.gz" common

rotatelogs语法

rotatelogs [ -l ] logfile [ rotationtime [
offset ]] | [ filesizeM ]

logfile它加上基准名就是日志文件名。如果logfile中包含”%”,则它会被视为用于strftime()的格式字符串;否则它会被自动加上以秒为单位的”.nnnnnnnnnn”后缀。这两种格式都表示新的日志开始使用的时间。rotationtime日志文件滚动的以秒为单位的间隔时间。offset相对于UTC的时差的分钟数。如果省略,则假定为”0″并使用UTC时间。比如,要指定UTC时差为”-5小时”的地区的当地时间,则此参数应为”-300″。filesizeM指定以filesizeM文件大小滚动,而不是按照时间或时差滚动。在
Windows 下的设置例子如下: 

#
限制错误日志文件为 1M
 

ErrorLog
“|bin/rotatelogs.exe -l logs/error-%Y-%m-%d.log 1M”
 

#
每天生成一个错误日志文件
 

#ErrorLog
“|bin/rotatelogs.exe
  logs/error-%Y-%m-%d.log
86400″ 

#
限制访问日志文件为 1M
 

CustomLog
“|bin/rotatelogs.exe -l logs/access-%Y-%m-%d.log 1M” common
 

#
每天生成一个访问日志文件
 

#CustomLog
“|bin/rotatelogs.exe
  logs/access-%Y-%m-%d.log
86400″ common

 

正题(实际运用操作):

修改/usr/local/apache2/conf/httpd.conf文件

ErrorLog
“logs/error_log”
#备注了它然后

改为

ErrorLog
“|/usr/local/apache2/bin/rotatelogs
/usr/local/apache2/logs/%Y-%m-%d-error_log 84600
480

CustomLog
“logs/access_log” common
#备注了它然后

改为

CustomLog
“|/usr/local/apache2/bin/rotatelogs
/usr/local/apache2/logs/%Y-%m-%d-access_log 84600 480” combined

 

然后重启Apache/usr/local/apache2/bin/apachectl -k restart

logs下就可看见改变了

-rw-r–r– 1 root
root   13400 Dec  8 15:50 2016-12-08-access_log

-rw-r–r– 1 root
root    3714 Dec  8 15:50 2016-12-08-error_log

可以把access_logerror_log删除了,以后日志都是按每天生成,对日志做分析时就方便了。

 

然后你还可以通过crontab定期把三天前的旧日志删除。(几天前自己在下面设置好)

 

crontab -e

00 00 * * *
/usr/bin/find /usr/local/apache2/logs/ -name ‘*_log’ -mtime +3 -exec rm -rf {}
\;

 

方法二:写shell脚本通过crontab定期进行备份删除重启日志操作

 

vim cron_log.sh

 

#!/bin/bash
# This script run at 00:00
 
logs_path="/usr/local/apache2/logs/"
#How much days backup most
DAYS=3
 
#Core of script
cd $logs_path
DATE=`date +%Y-%m-%d-%H`
SRC_FILE="access.log"
TAR_FILE="access-$DATE.tar.gz"
tar -czf $TAR_FILE $SRC_FILE
rm -f $SRC_FILE

find ./ -name "access-*" -type f -mtime +$DAYS -exec rm {} \;
/usr/local/apache2/bin/apachectl -k restart
exit 0;

添加到crontab中定期执行

crontab -e

00 00 * * *
/usr/local/crontab/cron_log.sh


VPS岛 的文章和资源来自互联网,仅作为参考资料,如果有侵犯版权的资源请尽快联系站长,我们会在24h内删除有争议的资源。丨 转载请注明【运维小分享】整理Apache日志
喜欢 (0)
发表我的评论
取消评论
表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址