Força o rsyslogd a criar um novo arquivo antes que alguém escreva nele

1

Estou usando o rsyslogd 7.4.4 no Ubuntu 14.04. Eu atualizei o arquivo de configuração /etc/rsyslog.d/30-component.conf com o seguinte conteúdo:

# provides UDP syslog reception
$ModLoad imudp
$UDPServerRun 514
$EscapeControlCharactersOnReceive off

$outchannel network,/var/log/component/network.log,10240000,/usr/home/component/bin/./rotate.sh /var/log/component/network.log

if $programname == 'Network' then :omfile:$network
if $programname == 'Network' then stop

if $programname == 'Network' then /var/log/gwc/network.log

De tempos em tempos, preciso excluir o arquivo network.log manualmente. Depois disso, sempre terei que reiniciar o daemon. O problema é que o novo arquivo não será criado até que alguém grave no canal syslog apropriado ('Network' no meu caso). Mas eu quero ter o arquivo network.log mesmo que esteja vazio.

Algum tempo atrás, eu usei o rsyslogd 4.2.0 no Ubuntu 10.04 com quase a mesma configuração. A única diferença é que " ~ " foi substituído por " stop " e ": omfile: " foi introduzido. Com essa versão, tudo estava bem e o novo arquivo foi criado depois que o daemon foi reiniciado.

Suponho que com o rsyslogd 4.2.0 a próxima linha leva ao arquivo de nova criação:

if $programname == 'Network' then /var/log/gwc/network.log

Mas parece que não funciona com o 7.4.4. Como posso conseguir esse comportamento da versão antiga com a versão mais recente?

    
por artspb 26.09.2014 / 16:44

2 respostas

2

O Rsyslog 5.x + não cria um arquivo (ou abre uma conexão de rede) até que ele tenha uma entrada de log que corresponda a esse filtro.

Esta é uma mudança do comportamento anterior relacionado à correção de problemas com a eliminação de privilégios. Não existe atualmente (a partir de 8.5) uma maneira de forçar a criação de arquivos vazios.

    
por 01.10.2014 / 08:34
-1

Forçar a rotação de log geralmente é feito com o logrotate também. Por exemplo, distros como rhel têm a configuração de rotação de log em /etc/logrotate.d /.

Por exemplo: /etc/logrotate.d/syslog contém as regras para arquivos rsyslogd. Nesse caso, posso forçar a rotação de log usando:

logrotate -f /etc/logrotate.d/syslog
    
por 26.09.2014 / 17:57

Tags