Bon alors si vous avez suivit mes instructions du billet précédent vous avez maintenant de belles stats toutes propres.

Sauf que pour la mise a jour c'est très moyennement pratique je vous l'accorde.

Ne vous inquiétez pas, la solution est (relativement) simple. Deux ou trois lignes dans un script bash et pis tout ira bien.

Préparez vous a dégainer votre vi préféré, ça commence.

Prenons le script suivant:

#! /bin/bash
datesem=`date +%W`
dateprevsem=`date  --date='1 days ago' +%W`
datejour=`date  --date='1 days ago' +%u.gz`
dateday=`date --date='1 days ago' +%A`
if  $dateday = "Sunday" 
   then
   echo "/kunden/homepages/5/d143550037/htdocs/logs/access.log.$dateprevsem.gz"
   else
   echo "/kunden/homepages/5/d143550037/htdocs/logs/access.log.$datesem.$datejour"
fi

Tout d'abord on récupère le numéro de la semaine en cours (date +%W). En effet les logs sont renommés ainsi: access.log.40.5 ou 40 est le numéro de la semaine en cours et 5 le jour (en commençant a partir du lundi).

La seconde variable sert a savoir dans quelle semaine nous étions la veille, les logs étant regroupés par semaine toutes les semaines la nuit entre le dimanche et le lundi, cette info a son importance.

La variable datejour sert a savoir quel jour de la semaine nous sommes (en chiffre). Enfin, la variable dateday sert a savoir le jour en lettres. Je sais que c'est totalement inutile vu que ma boucle conditionnelle pourrait être basée sur datejour=7 mais je trouvais ça plus joli!

Donc que fait ce script? Il retourne tout simplement l'emplacement du log de la journée précédente (ou de la semaine précédente pour les logs du dimanche).

Il reste a modifier le fichier de configuration d'awstats pour prendre en compte ce script: LogFile="gzip -d <`/kunden/homepages/5/d143550037/htdocs/stat/jourdate.sh` |" Cette ligne suffira a la place de ce qui vous aviez en LogFile. Enfin ça suffira si vous copiez le script et que vous le nommez jourdate.sh. Le rendre exécutable peut aussi être intéressant :)

Enfin, pour automatiser tout ça, une ligne telle que celle ci dans la crontab et les stats seront mis a jour quotidiennement a 2h du matin: 00 02 * * * /usr/local/bin/perl /kunden/homepages/5/d143550037/htdocs/stat/awstats.pl -config=madcastor.info -update

Par ailleurs, si vous vouez intégrez d'anciens logs dans vos stats awstats c'est assez simple. Le seul inconvénient est qu'awstats ne sait pas ajouter des logs plus anciens que ceux qu'il a déjà... Il faut donc tout d'abord supprimer les logs actuels: allez dans le répertoire d'awstats et supprimez tous les fichiers awstats*.txt et awstats*.tmp. Attention ceci supprimera tous vos logs awstats pensez a faire une copie du répertoire avant on ne sais jamais...

Puis modifier dans awstats.conf le paramètre LogFile pour qu'il prenne les logs d'une semaine précédente par exemple pour la semaine 37:

#LogFile="gzip -d </kunden/homepages/5/d143550037/htdocs/logs/access.log.37.gz|"

Simple non?