Primeiro, o logrotate não tem uma maneira fácil de substituir uma correspondência de glob existente de um arquivo. Simplesmente tentar adicionar uma correspondência mais específica posteriormente na configuração fornecerá uma mensagem de erro.
Então, para contornar isso, existem basicamente duas maneiras.
O primeiro é o mais fácil: coloque os logs que precisam de um tratamento diferente em um diretório diferente. Dessa forma, você pode até mesmo facilitar a alteração da configuração simplesmente fazendo um log de aplicativo em um diretório diferente. Exemplo:
"/var/log/uwsgi/*.log" "/var/log/uwsgi/keep05/*.log" {
copytruncate
daily
rotate 5
compress
delaycompress
missingok
notifempty
}
"/var/log/uwsgi/keep60/*.log" {
daily
missingok
rotate 60
compress
delaycompress
notifempty
create 0640 www-data adm
}
Uma segunda maneira seria criar uma exclusão no primeiro glob, aquele que corresponde a todos os 12 logs. Mas como o logrotate não tem uma maneira fácil de excluir um arquivo em particular, você fica com o que a biblioteca de correspondência de nome de arquivo regular fornece - e isso é essencialmente apenas um caractere no nome do arquivo. Se você fizer a regra de que os registros que precisam ser mantidos por 60 dias devem começar com um 6 e nenhum outro registro pode começar com um 6, você pode fazer isso:
"/var/log/uwsgi/*.log" "/var/log/uwsgi/*/[!6]*.log" {
copytruncate
daily
rotate 5
compress
delaycompress
missingok
notifempty
}
"/var/log/uwsgi/app/6*.log" {
daily
missingok
rotate 60
compress
delaycompress
notifempty
create 0640 www-data adm
}
Eu recomendo a primeira versão; provavelmente será mais fácil acompanhar se / quando você adicionar mais aplicativos.