rsyslog não está girando em tamanho de arquivo fixo

3

Estou tentando criar um arquivo de log separado para um aplicativo no Linux. Até agora, criei um script .conf para separar o arquivo de log customizado baseado no nome do programa e está funcionando corretamente.

Mas, quero limitar o tamanho do arquivo de log em 10K e estou usando $outchannel para essa finalidade. O script é armazenado como /etc/rsyslog.d/00-abc_log.conf :

$outchannel o_abc, /var/log/abc.log, 10240, /home/xyz/logrot
if $programname == 'abc' then :omfile:$o_abc

e o script /home/xyz/logrot contém o seguinte:

mv -f /var/log/abc.log /var/log/abc.log.1

Abaixo do limite de 10K, a criação de log está funcionando corretamente, mas depois que o log exceder o limite de tamanho de 10K, o arquivo abc.log.1 não é gerado e o login no abc.log é interrompido.

Se for importante, meu sistema é o Xubuntu 12.04 executando rsyslog-5.8.6 .

Obrigado antecipadamente.

    
por Jaydeep Dhrangdhariya 17.12.2012 / 13:51

1 resposta

2

Seu problema ocorre porque o aplicativo ainda tem o descritor de arquivos aberto depois que você o moveu no sistema de arquivos. A menos que você possa dizer ao programa para reiniciar o registro diretamente após a mudança (geralmente para deamons, existe um sinal para ele como SIGHUP ), você terá que usar outro método para rotação do que mover arquivos para os quais estão gravados naquele momento

Sugiro usar logrotate da seguinte forma. Não testei, pois você não compartilhou o aplicativo envolvido.

Crie seu próprio arquivo de configuração de logrotate, por exemplo abclogrotate.conf :

/var/log/abc.log {
    # don't use time based rotation, but size-based
    size 10k
    # don't move, but copy-and-truncate so the application won't have to be
    # told that the file has moved.
    copytruncate
    # maximum of one old file
    rotate 1
    # counting old files starts at 1 rather than 0
    start 1
    # don't use compression
    nocompress
}

Agora chame logrotate assim: logrotate /path/to/abclogrotate.conf em vez de seu próprio script.

    
por gertvdijk 18.12.2012 / 10:08