我正在尝试将来自特定远程主机的消息记录到单独的日志文件(并且只记录到该文件)。我试过这个:
# cat /etc/rsyslog.d/avs110door.conf
if $fromhost == 'avs110' then /var/log/avs110-door.log
& stop
未创建日志文件,并且该主机的消息仍会发送到 user.log、syslog、messages 和 auth.log(取决于设施)。
我确实运行了systemctl restart rsyslog.service
,并且该目录中的其他 .conf 文件确实按预期工作。
这是带有 rsyslog 版本 8.4.2-1+deb8u2 的 Debian Jessie 服务器。
错误文件中的消息如下(因此远程主机名确实是“avs110”,如我的 .conf 文件条件所示):
Jul 18 18:27:19 avs110 sshd[781]: Server listening on :: port 22.
Jul 18 18:27:39 avs110 engine[844]: Finished initialization
Jul 18 18:44:20 avs110 engine[844]: Calling sip:[email protected]:5060
答案1
事实证明,$fromhost
变量不是消息中出现的主机名,而是完全限定域名。消息的主机名在另一个变量中:$hostname
。
所以我尝试过的方法没有起作用,但是以下任何一种方法都可以将日志从特定主机发送到特定的日志文件:
$hostname
:如消息中所示$fromhost
:反向查找的 FQDN$fromhost-ip
:嗯,这个很明显:IP
或者:
if $hostname == 'avs110' then /var/log/avs110.log
& stop
if $fromhost == 'avs110.example.com' then /var/log/avs110.log
& stop
if $fromhost-ip == '192.168.44.159' then /var/log/avs110.log
& stop