Tempo viajando e arquivos de log

1

Ao testar alterações em uma base de código legado em um sistema de desenvolvimento, meu método preferido de teste é definir o relógio do sistema como uma data anterior, por exemplo, date -s '-7 days' , depois reproduzir algumas operações, verificar arquivos de saída e de log, e avança a data 1 dia, depois reproduz mais operações, verifica a saída e os registos, avança 1 dia e basicamente repete isto durante o tempo que for necessário.

Após a jornada inicial até o passado, mas antes de executar as operações, eu executo este comando para truncar os arquivos de log que modificaram as datas no futuro:

logs=$(find /var/log -type f -mtime -0); for log in $logs; do cat /dev/null > $log; done

Isso esvazia os arquivos de log, no entanto, o que eu realmente gostaria é de excluir "entradas futuras" em arquivos, sob /var/log/ e seus subdirs ( apache/mysql/... ) que ocorreram após a data atual do servidor.

Existem utilitários / ferramentas que ajudarão a excluir as entradas de log do futuro, em vez de truncar arquivos completamente como eu faço no momento.

Estou usando o Debian estável.

    
por jon 25.04.2016 / 12:59

2 respostas

2

Você pode usar logrorate -f se o seu sistema usar logrorate. Isto deve rodar (isto é, esvaziar) todos os logs imediatamente. Veja logrotate (8).

Editar: Na verdade, seu sistema não precisa usar o logrotate permanentemente, você pode ter preparado o arquivo de configuração apenas para essa rotação e executá-lo somente depois de empurrar o tempo para trás. O Logrorate também se beneficia de não perder todos os logs reais, eles são apenas gzipados e os gzips mais antigos são deletados.

    
por 25.04.2016 / 14:15
0

Tire um instantâneo do diretório de log, de uma forma ou de outra.

Seu cenário parece exigir a execução dos testes em uma máquina virtual. Faça um instantâneo da VM, execute os testes e, depois de obter os resultados do teste, descarte o estado da VM e restaure a captura instantânea.

Se você deseja executar os testes sem criar uma captura instantânea da VM, pode fazer um backup do diretório de log e, após os testes, restaurar o backup e reiniciar o daemon syslog. Ou você pode montar temporariamente um sistema de arquivos tmpfs em /var/log , reiniciar o syslogd, executar os testes, desmontar /var/log , reiniciar o syslogd.

    
por 26.04.2016 / 01:33