Ordenando el accesslog de Apache
Muchas veces tenés varios logs de Apache2 y necesitas combinarlos para generar un reporte o similar. He aquí una pequeña guia..
Combinar los logs es facil, algo similar a esto te funcionaría:
– Creas una carpeta temporaria (asegurate de tener espacio disponible!)
mkdir /tmp/logs cd /tmp/logs
– Copias todos los accesslogs a esa carpeta
cp /var/log/apache2/access_log* /tmp/logs/
– Descomprimis los archivos gzipeados
gunzip access_log*.gz
– Los mandas todos a un unico archivo:
cat access_log* > apache2-access.log
Con esto vas a tener un unico log, con todo mesclado dentro.
Si necesitas ordenarlo por fecha correctamente, podes usar este script:
#!/bin/sh # # apachelog-sort.sh - Sort Apache2 accesslog file # if [ $# -ne 2 ] then echo "\n### Error! ### - Wrong Arguments!\n" echo "Usage: ./`basename $0` \n" exit 1 fi if [ ! -f $1 ]; then echo "\n### Error! ### - Input log file doesn't exist ($1)\n" echo "Usage: ./`basename $0` \n" exit fi echo "Sorting $1 into $2 ..." sort -t ' ' -k 4.9,4.12n -k 4.5,4.7M -k 4.2,4.3n -k 4.14,4.15n -k 4.17,4.18n -k 4.20,4.21n $1 > $2
Lo guardas como «apachelog-sort.sh» y lo ejecutas:
chmod 755 /apachelog-sort.sh ./apachelog-sort.sh apache2-access.log apache2-access-sorted.log
Esto nos dejará en el archivo apache2-access-sorted.log un único log, ordenado por fecha.
That’s all.