webForumDet fria alternativet

Perl - Rotera Apache-log och spara varje dag

Programmering

0 svar · 1 444 visningar · startad av FlashX

Medlem sedan nov. 19991 033 inlägg
Frågan#1

Får man väldigt stora access-loggar så kan det vara bra att rotera dem men samtidigt vill man kanske spara dessa för senare bruk.

Denna varianten zippar loggen varje dag och lägger den i en mappstruktur. En mapp för årtalet och sedan månadsmapp som innehåller loggfilerna döpta med dagens datum, så det går enkelt att hitta filen samt radera hela månader eller år.

Skriptet är testat med Slackware men borde fungera på de flesta distar som har gzip och perl.

Först skapar vi ett enkelt bash-skript som kör perl-skriptet och roterar loggen. Det är detta skript som ska läggas i crontab och alltså köras som ett cronjobb.

Bash-skript:

perl /usr/local/script/archive_access_log.pl

rm /usr/local/apache/logs/webforum-access_log
touch /usr/local/apache/logs/webforum-access_log

kill -HUP `cat /usr/local/apache/logs/httpd.pid`

Detta skriptet måste kunna exekveras av användaren som kör cronjobbet.
Översta raden anger sökväg till själva perl-skriptet som ska skapa kopian på loggarna innan dessa raderas.

Kontrollera också så Apache:s sökvägar stämmer.

Vill man inte zippa loggarna så kan man plocka bort sista delen i skriptet nedanför (bifogade filen). Se till att det finns rättigheter att köra skriptet för den användare som ska köra det samt att det också går att skriva till den mapp du vill spara loggarna i.

274 ms totalt · 4 externa anrop · v20260731065814-full.6fe65c25
143 ms — deklarationer (db)
0 ms — hämta statistik (cache)
124 ms — hämta tråd, inlägg och bilagor (db)
146 ms — ändringar (db)