Isso é feito por logrotate
, que como um trabalho diário de cron
verifica seus arquivos de configuração para arquivos de log que precisam ser rotacionados, compactados, removidos e executam as ações necessárias.
Para /var/log/auth.log
, que é na verdade um arquivo rsyslog
gerenciado, como rsyslog
despeja todas as informações de autenticação ( auth
, authpriv
facilities) lá (conf file: /etc/rsyslog.d/50-default.conf
), a configuração relevante arquivo para logrotate
é /etc/logrotate.d/rsyslog
.
No meu 14.04 que contém:
/var/log/mail.info
/var/log/mail.warn
/var/log/mail.err
/var/log/mail.log
/var/log/daemon.log
/var/log/kern.log
/var/log/auth.log
/var/log/user.log
/var/log/lpr.log
/var/log/cron.log
/var/log/debug
/var/log/messages
{
rotate 4
weekly
missingok
notifempty
compress
delaycompress
sharedscripts
postrotate
reload rsyslog >/dev/null 2>&1 || true
endscript
}
Portanto, /var/log/auth.log
está sendo rotacionado por essa configuração.
Para modificar o comportamento para manter o número desejado de arquivos girados, você pode alterar o parâmetro rotate
para o valor desejado (qualquer inteiro positivo, 0
removerá os arquivos antigos instantaneamente) na seção { ... }
após o declaração de nome de arquivo, mas isso mudará o comportamento de todos os arquivos mencionados, o que pode não ser o comportamento desejado.
Em vez disso, remova /var/log/auth.log
de lá e faça uma entrada separada para isso colocando o seguinte no final:
/var/log/auth.log
{
rotate 10
weekly
missingok
notifempty
compress
delaycompress
postrotate
reload rsyslog >/dev/null 2>&1 || true
endscript
}
O texto acima irá girar /var/log/auth.log
, weekly
, com compress
-ion, não se estiver vazio ( notifempty
), e manterá 10
de cópias giradas, e as mais antigas serão removidas .
Altere-os para atender sua necessidade e leia também man 5 logrotate.conf
.