设置
我有这个/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
创建目录,还是我必须自己创建?
文档(http://www.rsyslog.com/doc/v8-stable/configuration/action/index.html#omfile-specific-configuration-statements)说 rsyslog 具有
$CreateDirs
旧配置选项来控制是否创建目录根据需要。(下一个配置格式有一个类似命名CreateDirs
的选项,但您的示例使用的是旧格式。)所以尝试以下行:$CreateDirs on
就在你之前
local1.* ?local1DynFile;local1LogFormat
线。