设置

设置

设置

我的里面有这个/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

然后我有以下 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')

问题

如果我执行以下操作:

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

我没有收到任何日志消息。但是:

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

并且一切正常。

问题

如果目录不存在,我可以创建rsyslog它们吗?还是我必须自己创建?

答案1

文档(http://www.rsyslog.com/doc/v8-stable/configuration/action/index.html#omfile-specific-configuration-statements) 表示 rsyslog 具有$CreateDirs旧配置选项来控制是否根据需要创建目录。 (CreateDirs下一个配置格式有一个类似名称的选项,但您的示例使用旧格式。)因此请尝试以下行:

$CreateDirs on

就在你的

local1.* ?local1DynFile;local1LogFormat

线。

相关内容