У меня есть следующий файл конфигурации в "/etc/rsyslog.d/10-my.conf"
# This file is managed by Puppet, changes may be overwritten
if $programname == 'hello' then -/var/log/test/test.log
& ~
В CentOS6.5 (rsyslog 5.8.10 ) это создает пустой файл в /var/log/test/test.log
Тот же файл конфигурации в CentOS7 (rsyslog 7.4.7 ) не создает пустой файл.
Кто-нибудь может сказать, почему это так? Изменилось ли это поведение в версии 7.4? Или это что-то в моем экземпляре CentOS7?
rsyslogd -f / etc / rsyslog.d / 10-my.conf -N3
На CentOS6 и CentOS7 выдает множество предупреждений, но ничего серьезного.
CentOS7 SELinux установлен в разрешающий режим
CentOS 7 (/etc/rsyslog.conf)
# file is managed by puppet
#################
#### MODULES ####
#################
$ModLoad imuxsock # provides support for local system logging
$ModLoad imjournal # provides access to the systemd journal
###########################
#### GLOBAL DIRECTIVES ####
###########################
$MaxMessageSize 2k
#
# Set the default permissions for all log files.
#
$FileOwner root
$FileGroup root
$FileCreateMode 0600
$DirOwner root
$DirGroup root
$DirCreateMode 0750
$PrivDropToUser root
$PrivDropToGroup root
$WorkDirectory /var/lib/rsyslog
$Umask 0000
# Turn off message reception via local log socket;
# local messages are retrieved through imjournal now.
$OmitLocalLogging on
$IncludeConfig /etc/rsyslog.d/*.conf
#
# Emergencies are sent to everybody logged in.
#
*.emerg :omusrmsg:*
Как и ожидалось, оказалось, что поведение по умолчанию изменилось в 7.4, и он больше не создает пустой файл, однако работает нормально (например, создает файл test.log), если вы проверяете это можно сделать с помощью следующей команды:
logger -t hello "Test"
Версия 5.8 действительно создает пустой файл, но все равно работает нормально, если этот файл (/var/log/test/test.log) был удален.