É possível que o rsyslog crie um diretório?

1

A configuração

Eu tenho isso no meu /etc/rsyslog.conf :

$template local1DynFile,"/path/to/my/log/%programname%.log.%NOW%
$template local1LogFormat,"%msg:2:$:%\n"

*,*;auth,authpriv,local0,local1.none          ~/var/log/syslog

local1.*                                      ?local1DynFile;local1LogFormat

Então eu tenho o seguinte script Python ( test.py ):

import logging
import logging.handlers

logger = logging.getLogger('pxet.foo')
logger.addHandler(logging.handlers.SysLogHandler(address='/run/systemd/journal/syslog', facility='local1'))
logger.handlers[0].setLevel(logging.DEBUG)
logger.setLevel(logging.DEBUG)

logger.debug('test cockroach is a bug')

O problema

Se eu fizer o seguinte:

rm -rf /path/to/my/log
systemctl restart rsyslog
python test.py

Eu não recebo nenhuma mensagem de log. No entanto:

mkdir -p /path/to/my/log
python test.py

E tudo funciona.

A questão

É possível fazer rsyslog criar os diretórios, se eles não existirem, ou eu mesmo tenho que fazer isso?

    
por Wayne Werner 05.01.2016 / 00:09

1 resposta

2

A documentação ( link ) diz que o rsyslog tem a opção de configuração legacy $CreateDirs para controlar se deve ou não criar diretórios conforme necessário. (Existe uma opção com o mesmo nome CreateDirs para o próximo formato de configuração, mas o seu exemplo usa o formato legado.) Portanto, tente a linha:

$CreateDirs on

pouco antes de sua

local1.* ?local1DynFile;local1LogFormat

linha.

    
por 05.01.2016 / 07:58

Tags