我正在尝试将来自特定远程主机的消息记录到单独的日志文件(并且仅记录到该文件)。我试过这个:
# 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
事实证明,该
$fromhost
变量不是消息中显示的主机名,而是完全限定的域名。消息的主机名在另一个变量中:$hostname
.因此,我尝试过的方法不起作用,但是以下任何方法都可以将日志从特定主机发送到特定日志文件:
$hostname
: 如消息中所示$fromhost
: 来自反向查找的 FQDN$fromhost-ip
: 嗯,很明显:IP或者: