squid access.log excluir entradas com mais de 6 meses

2

O Squid gera um log dos sites acessados pelos usuários. Desejo excluir as entradas no /var/squid/logs/access.log , que têm mais de 6 meses.

Eu executaria o script toda semana. Eu pensei em um script perl ou algo assim.

Veja como o access.log se parece:

As entradas são geradas assim:

IP - - [15/Oct/2011:02:04:32 -400]
    
por TaXXoR 16.09.2013 / 13:24

2 respostas

5

A solução usual para esse problema é usar rotacionar os arquivos de log para que o arquivo de log atual apenas contenha entradas atuais, ao invés de remover entradas desatualizadas do arquivo.

Isso tudo é tratado pelo programa logrotate . A configuração a seguir deve fazer aproximadamente o que você deseja. Ele manterá os últimos 6 meses de entradas de log de /var/squid/logs/access.log , girando os arquivos semanalmente.

/var/squid/logs/access.log {
    weekly
    rotate 26
    missingok
    nocreate
    sharedscripts
    postrotate
        test ! -e /var/run/squid.pid || /usr/sbin/squid -k rotate
    endscript
}

Se você se importa com os dados em seus arquivos de registro, não deve modificá-los.

    
por 16.09.2013 / 13:38
0

Uma solução com newsyslog :

# logfile                 [owner:group]    mode    count    when   flags
/var/squid/logs/access.log root             644     26       $W0D0  JN

O arquivo de log será girado 26 vezes antes de ser excluído. $W0D0 indica que serei rotacionado a cada domingo em 0:00 o'clock.

O sinalizador J indica que o newsyslog deve compactar o arquivo girado usando bzip2 .

O sinalizador N indica que não há processo que precise ser sinalizado.

    
por 17.09.2013 / 14:44