我的 rsyslog 配置文件中有以下行:
*.*;auth,daemon,kern,user -/dev/logi
它做了它应该做的事情,但我想将一些 iptables 日志发送到不同的文件,所以我将以下内容添加到 rsyslog.conf 文件中:
:msg,contains,"IPTABLES:" /var/log/iptables
& stop
我创建了 /dev/fw device ,但我不知道如何将文件的新内容发送到该设备。有办法做到吗?
答案1
我终于找到了解决办法。
这是我在系统启动时创建的 fifo 设备:
LOG_DEV=/dev/logi
if [ ! -r $LOG_DEV ]; then
mkfifo $LOG_DEV
chmod 640 $LOG_DEV
chown root:morfik $LOG_DEV
fi
我刚刚将其添加到/etc/init.d/rsyslog
文件中。
有了该设备,我可以通过在文件中放置以下行来将所有日志发送到那里/etc/rsyslog.conf
:
*.* -/dev/logi
它是规则部分的第一行,因此每个日志都会到达那里并继续处理配置文件中的其他规则。该文件中的下一条规则是:
:msg,contains,"IPTABLES:" /var/log/iptables
& stop
它将 iptables 日志发送到特定文件,执行此操作后,rsyslog 仅停止处理包含短语的条目IPTABLES:
。接下来的规则只是 rsyslog 配置文件中的普通规则。
所以我得到了我想要的——所有日志都发送到 fifo 设备 + iptables 条目的单独日志文件。