A maioria das distribuições Linux modernas inclui uma ferramenta chamada logrotate
, que o SO usa para manter o diretório /var/log
. Você pode usá-lo também. Ele é expulso via cron
, então se você quiser que os logs sejam rotacionados com uma certa frequência, então você precisa configurar um cronjob que seja executado com frequência.
Exemplos
Isto irá rodar os 2 ficheiros access.log
& error.log
, mantendo no máximo 5 (atual + 4 rotações). Depois de realocar o arquivo de log atual, killall -HUP httpd
envia um sinal "Desligar" para o daemon em execução para acionar a criação de um novo arquivo de log para iniciar o registro a partir dos arquivos originais access.log
e error.log
. Este também irá rodar os arquivos de log se o tamanho deles exceder 100k.
"/var/log/httpd/access.log" /var/log/httpd/error.log {
rotate 5
mail [email protected]
size 100k
sharedscripts
postrotate
/usr/bin/killall -HUP httpd
endscript
}
Este rotacionará os arquivos de log no diretório /var/log/news/*
montly, mantendo 2 (atual + 1). Esse conjunto de regras manterá os logs em seu estado original, em vez de não serem compactados ( .gz
), que é o comportamento padrão.
/var/log/news/* {
monthly
rotate 2
olddir /var/log/news/old
missingok
postrotate
kill -HUP 'cat /var/run/inn.pid'
endscript
nocompress
}
Tenho que enviar kill -HUP?
Não, isso não é obrigatório, somente se seu aplicativo exigir isso. Isso é o que aciona o aplicativo para parar de gravar no arquivo de log atual (depois de ter sido renomeado de access.log
para access.log.1
) e começar a registrar novamente no nome original, access.log
.
/var/log/atop/atop.log {
missingok
weekly
rotate 4
notifempty
create 0600 root root
}
Referências