usando logrorate com um diretório de log complexo

usando logrorate com um diretório de log complexo

Um aplicativo possui um diretório de log no qual muitas saídas de log são criadas. A estrutura do arquivo neste diretório de log é semelhante a esta:

localhost:/var/log/myapp # ls

appClient22334.a    appClient22336.a    appClient22338.a
appClient22334.b    appClient22336.b    appClient22338.b    
appClient22334.c    appClient22336.c    appClient22338.c
appClient22335.a    appClient22337.a    appClient22339.a
appClient22335.b    appClient22337.b    appClient22339.b
appClient22335.c    appClient22337.c    appClient22339.c

Todos os dias, o aplicativo gera centenas desses arquivos, que devem ser armazenados. Os números aumentam.

Para a maioria dos propósitos, eu uso o logrotate para armazenar e compactar arquivos de log diariamente, mas neste caso não consigo ver como isso poderia ser feito.

A solução ideal seria ter algo como

appClient.20120324.gzip
appClient.20120325.gzip
appClient.20120326.gzip

Alguém de vocês pode me orientar na direção certa, se isso puder ser feito usando o logrotate (talvez uma maneira inteligente de usar prerotate?), Ou se for mais rápido/fácil escrever um script bash específico?

Responder1

No interesse de manter as coisas simples, eu executaria um cron job diário que concatenaria os arquivos de log de ontem em um arquivo (por exemplo, Yesterday.log) e, com sucesso, os excluiria e, em seguida, executaria logrotate para (re) nomear e compactar esse arquivo. Você pode forçar o logrotate a realizar toda a tarefa usando, sharedscriptsmas acho que não e não perderia tempo tentando descobrir isso.

informação relacionada