将信息从系统日志重定向到单独的文件

将信息从系统日志重定向到单独的文件

我想记录所有传入的 TCP 连接到我的 Ubuntu 18.04.3 系统。这工作正常,不是问题,只是作为介绍。我在 crontab 中使用此命令:

@reboot /sbin/iptables -I INPUT -p tcp --syn -j LOG --log-prefix='[tcpconnections] '

(我知道这不是一个很好的方法,但这不是安全问题,所以我对这种简单的方法很满意。同样,这不是问题所在。)

当然,这会在系统日志中创建大量日志行。因此想要将信息重新路由到单独的日志文件:

/var/log/tcpconnections.log

我设法通过创建一个新文件将日志记录信息放入这个单独的文件中

/etc/rsyslog.d/tcpconnections.conf

与内容

if $msg contains "[tcpconnections]" then {
        /var/log/tcpconnections.log
        stop
}

然后重新启动 rsyslog 服务和/或整个系统。

但是,日志条目同时显示在:系统日志中和单独的日志文件中。 据我所知,“停止”应该可以防止这种情况发生。

我也尝试过但没有成功的事情:

〜而不是停止,但发现这已被弃用

:msg,contains,"[tcpconnections] " /var/log/tcpconnections.log
   & ~

几乎是上述内容的任意组合以及我可以在谷歌上搜索到的有关该主题的任何内容。

有人知道我的错误在哪里吗?我将非常感谢对此的任何帮助,谢谢大家。

答案1

我遇到了同样的问题,忘记了处理订单。您需要将文件命名为类似的名称/etc/rsyslog.d/00_tcpconnections.conf,以便在/etc/rsyslog.d/.这是我的 ocragent 脚本的示例。

# copy to /etc/rsyslog.d/00_ocragent.conf
if ( $programname == "ocragent" ) then {
    action(type="omfile" file="/var/log/ocragent.log" flushOnTXEnd="on")
    stop
}

相关内容