[caracas-pm] Fragmentar la bitácora de Squid

Ernesto Hernández-Novich emhnemhn at gmail.com
Tue Apr 28 18:49:32 PDT 2009


Recientemente tuve que convertir un sistema de reportes de Squid del
venerable sarg a srg. La configuración existente construía reportes
semanales, y por eso la rotación de bitácoras de Squid era,
precisamente, semanal. Sin embargo, la configuración "automágica" de srg
en Debian favorece la creación de respaldos diarios, siempre y cuando la
rotación de bitácoras de Squid también lo sea. Este problema se resuelve
trivialmente, pero restaba el problema de las bitácoras anteriores, las
cuales debían ser fragmentadas en archivos con las entradas
correspondientes a cada día.

Cada entrada en un archivo access.log de Squid comienza con la fecha en
Epoch Unix, así que el siguiente script se encargó de resolver el
problema

#!/usr/bin/perl
# Split Squid Logs
use POSIX qw/strftime/;
my $d, $FH, $l;
while (<>) {
  my ($t) = split;
  my $n = strftime("%Y-%m-%d", localtime $t);
  if ($d ne $n) {
    -r $FH && close $FH && print "\n";
    open $FH,">$n.log";
    $d = $n;
    $l = 0;
  }
  print $FH $_;
  print "Working on $d...", ++$l," lineas\r";
}
print "\n";
close $FH;

Básicamente se hace

$ ( zcat /var/log/access.log*gz ; cat /var/log/access.log ) | split.pl

y aparecen archivos de la forma

2009-04-01.log
2009-04-02.log
...

con las líneas correspondientes a cada día.
-- 
Ernesto Hernández-Novich - Linux 2.6.28 i686 - Unix: Live free or die!
Geek by nature, Linux by choice, Debian of course.
If you can't aptitude it, it isn't useful or doesn't exist.
GPG Key Fingerprint = 438C 49A2 A8C7 E7D7 1500 C507 96D6 A3D6 2F4C 85E3




More information about the caracas-pm mailing list