sintaxe do arquivo de configuração logrotate - múltiplas entradas curinga possíveis?

73

Como a página man não responde à minha pergunta e eu não quero forçar um ciclo de rotação, decidi fazer a pergunta aqui.

A página man do logrotate fornece o seguinte exemplo:

   "/var/log/httpd/access.log" /var/log/httpd/error.log {
       rotate 5
       mail [email protected]
       size 100k
       sharedscripts
       postrotate
           /usr/bin/killall -HUP httpd
       endscript
   }

Todos os exemplos com curingas contêm apenas uma única entrada. Agora, o que me interessa é se este também é permitido:

   /var/log/httpd/*.log /var/log/httpd/*/*.log {
       # ... same as above
   }

Aqui está o raciocínio: eu tenho vários vhosts e os divido pelo usuário que "possui" esses vhosts. Como os arquivos de log são de fácil leitura, quero montar uma pasta no diretório inicial do usuário, mas limitá-la aos arquivos de log que o usuário "possui", o que é mais fácil de conseguir separando os logs em pastas montagem requer esse esquema de qualquer maneira). Então, estou procurando uma solução para girar os arquivos de log em /var/log/httpd , bem como todos os arquivos de log em subdiretórios desse diretório - sem ter que listar cada subdiretório pelo nome.

Em geral, a página man não dá pistas se várias entradas são possíveis para regras curinga ou apenas para caminhos completos. Eu estou usando o logrotate versão 3.7.8-6 que vem com o Debian "Squeeze", mas eu acho que isso não é necessariamente específico para uma versão de programa ou distro.

    
por 0xC0000022L 10.03.2011 / 22:09

3 respostas

106

Sim, você pode usar vários curingas. Você pode testar seu arquivo sem realizar as rotações reais fazendo isso:

logrotate -d -f /etc/logrotate.conf
  • -d = Ativa o modo de depuração. No modo de depuração, nenhuma alteração será feita nos logs ou no arquivo de estado do logrotate.

  • -f = Informa logrotate para forçar a rotação, mesmo que não pense           Isso é necessário. Às vezes isso é útil após adicionar novos           entradas para logrotate, ou se arquivos de log antigos foram removidos por           lado, como os novos arquivos serão criados, e o registro será           tinue corretamente. '

por 10.03.2011 / 23:08
15

Eu só queria esclarecer, porque é isso que eu tenho aqui procurando como fazer,

Vários arquivos de log podem ser especificados para uma única configuração, por exemplo,

/var/log/httpd/access.log
/var/log/httpd/error.log
/var/log/httpd/mysite/*.log
{
    rotate 5
    mail [email protected]
    size 100k
    sharedscripts
    postrotate
        /usr/bin/killall -HUP httpd
    endscript
}
    
por 18.01.2017 / 21:21
2

Da página man do logrotate :

Note that log file names may be enclosed in quotes (and that quotes are required if the name contains spaces). Normal shell quoting rules apply, with ', ", and \ characters supported.

Lembre-se de modificar ou remover aspas ao passar de padrões simples para múltiplos:

Isso funciona:

/var/log/*.log /var/log/*.blog {

isso também funciona:

/var/log/*.log
/var/log/*.blog {

Isso não funciona:

'/var/log/*.log /var/log/*.blog' {

e nem isso:

"/var/log/*.log /var/log/*.blog" {

Compare com o caso de padrão único.

Isso funciona:

'/var/log/*.log' {

e isso também funciona:

"/var/log/*.log" {

Testado com o logrotate 3.10.0

    
por 20.03.2017 / 10:21