備忘録

AWStatsで日付のログを見に行く

2010年9月3日

前回、Apacheでローテーションの設定を行いました。

しかし、ローテーションを行ったせいかAWStatsが正常に動かなくなりました……

Vine5からはaccesslog.1のような数字ではなく、日付のローテーションになったためです。

/etc/logrotate.conf を見るとdateextという項目があったからなんですけど、数字よりも日付のほうが管理しやすいので、AWStatsのシェルスクリプトを変更することにしました。

#!/bin/sh

ALOG=/var/log/apache2/access_log
A1LOG=/var/log/apache2/access_log-
NEWLOG=/var/log/apache2/access_log.new
UTF8LOG=/var/log/apache2/access_log.utf8
UTF8DECODE=/home/hoge/public_html/awstats_utf8_decode.pl
AWSTATS=/home/hoge/public_html/awstats_awstats.pl
LOG=/var/log/awstats.log

#cat $ALOG > $NEWLOG

cat /var/log/apache2/test.txt > $NEWLOG

a=10
while [ $a -ge 0 ]
do
a=`expr $a - 1`
day=`date -d $a'days ago' '+%Y%m%d'`
day2=$A1LOG$day
if test -e $day2;
then
A2LOG=$A1LOG$day
echo $day2"が対象です。"
cat $day2 >> $NEWLOG

fi
done
cat $ALOG >> $NEWLOG
echo $a
$UTF8DECODE < $NEWLOG > $UTF8LOG

$AWSTATS -config=awstats.conf -update > $LOG
chmod 600 $LOG

シェルスクリプトなんてほとんど使ったことがないのですごく適当です…w
単純に10日前までwhileで1日ずつlogファイルがあるか調べに行き、あれば連結作業なければ前の日を探すという
作業をしています。
参考までにどぞです。

-備忘録
-, , ,