前回、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ファイルがあるか調べに行き、あれば連結作業なければ前の日を探すという
作業をしています。
参考までにどぞです。