É possível logrotate
considerar arquivos de log em um diretório e em todos os seus subdiretórios? (ou seja, sem listar explicitamente os subdiretórios.)
62
Qual a profundidade dos seus subdiretórios?
/var/log/basedir/*.log /var/log/basedir/*/*.log {
daily
rotate 5
}
Girará todos os arquivos .log em basedir /, bem como todos os arquivos .log em qualquer filho direto do basedir. Se você também precisar ir um nível mais fundo, adicione outro /var/log/basedir/*/*/*.log
até ter cada nível coberto.
Isso pode ser testado usando um arquivo de configuração de logrotate separado, que contém uma restrição que não será atendida (um tamanho mínimo alto) e, em seguida, o log em execução gire-se no modo detalhado
logrotate -d testconfig.conf
o sinalizador -d listará cada arquivo de log que está considerando girar.
-d
coloca o logrotate no modo de execução a seco (ou seja, na verdade não muda nada) na verdade.-f
opção diz ao logrotate para "forçar a execução". uma palavra simples no final do comando é um arquivo de configuração a ser usado em vez do padrão. entãologrotate -f /some/config
significa executar com esse arquivo de configuração e sempre executar, mesmo que o arquivo de configuração diga que ainda não é hora de executar. Aos meus olhos destreinados, e ao meu antecessor que fez um trabalho cron com isso, parecia que-f
estava apenas especificando o arquivo de configuração. Bastante confuso.No meu caso, a profundidade dos subdiretórios pode mudar sem aviso, portanto, configurei um script bash para encontrar todos os subdiretórios e criar uma entrada de configuração para cada diretório.
Também é importante para mim manter a estrutura dos subdiretórios após a rotação, o que os caracteres curinga (ou seja, a resposta do @ DanR) parecem não funcionar. Se você estiver fazendo rotações diárias de log, poderá colocar esse script em um cron-job diário.
Como o @DanR sugeriu, teste com
logrotate -d
fonte
É um tópico antigo, mas você pode fazer o seguinte:
Essas duas estrelas corresponderão a zero ou mais diretórios. Porém, você deve ter cuidado ao definir os arquivos de log a serem rotacionados, porque é possível rotacionar arquivos que já foram rotacionados. Vou citar o manual de logrotate aqui.
fonte
globstar
antes de executar o logrotate. Isso permitirá que o bashshopt -s globstar
.