Sim, há uma maneira correta: você não limpa os registros. Você gira eles. A rotação envolve alternar a saída do log para um novo arquivo, sob o mesmo nome, com os N arquivos de log anteriores mantidos sob um conjunto de N nomes de arquivos relacionados.
Como um rotaciona logs depende de como alguém os está escrevendo em primeiro lugar. Este é um ponto frequentemente ignorado. Algumas das respostas aqui mencionam pelo menos, mencionando que alguns programas de log mantêm um descritor de arquivo aberto para o arquivo de log, portanto, apenas excluir o arquivo não libera espaço ou, na verdade, até mesmo alterna a saída para um novo arquivo de log.
Se o programa que está gravando o arquivo de registro for multilog
do daemontools
package , por exemplo, você não faz nada para girar os logs - não há scripts manuais, não há cron
jobs. Simplesmente diga multilog
que a saída do log é para um diretório, e ele manterá um conjunto de N arquivos de log automaticamente rotacionados e com tamanho limitado nesse diretório.
Se o programa que está gravando os arquivos de log estiver svlogd
do runit
package , por outro exemplo, então o mesmo se aplica. Você não faz nada, além de apontar a ferramenta em um diretório. Ele manterá um conjunto de arquivos de log N girados automaticamente e com tamanho limitado nesse diretório.
Se você estiver usando rsyslog
para gravar arquivos de log, então o programa de registro pode ser disse para parar após o arquivo de log atingir um determinado tamanho e executar um script . Você tem que escrever a parte do script, para realmente renomear o arquivo de log e excluir arquivos de log antigos com base nas restrições de tamanho total, mas pelo menos o programa de log fechou o arquivo e pausou a gravação enquanto isso está acontecendo.
A antiga maneira de%% de% de registros rotativos, ainda é esperada registrando programas como o syslog-ng e como exemplificado por ferramentas como syslogd
mencionado por logrotate
em outra resposta aqui, é um pouco mais aleatório. Um executa um trabalho djangofan
que periodicamente renomeia os arquivos de log e reinicia o daemon de registro (usando qualquer supervisor de daemon em execução). O problema com isso, é claro, é que ele não impõe um limite de tamanho total. Em semanas lentas, pode-se obter N arquivos de log diários muito pequenos, enquanto nos dias de maior movimento, é possível obter um arquivo de log muito grande, bem acima do limite de tamanho.
É por isso que ferramentas posteriores e melhores, como cron
e multilog
, possuem opções de configuração de tamanho de arquivo e, na verdade, verificam os tamanhos dos arquivos de log, é claro. O mundo aprendeu que pesquisar os logs em uma programação com svlogd
jobs, ou até mesmo um daemon cron
, deixa as janelas para o tamanho estar errado, e que o local apropriado para ter essas verificações, e então rigourously imponha limites de tamanho definidos pelo administrador para que os arquivos de log de uma pessoa nunca engulam a partição em que estão, está no programa que está realmente gravando os arquivos em primeiro lugar.