如何调用模板以便 rsyslog 8 为每个客户端创建一个日志文件

如何调用模板以便 rsyslog 8 为每个客户端创建一个日志文件

我在用着rsyslog 8.22接收客户端主机发送的系统日志数据。我的目标是为每个客户端创建一个日志文件。

我找到了很多有关旧版本 rsyslog 的数据,但是配置语法的变化让我感到困惑。

此配置证明 rsyslog 正在运行,但将所有条目聚合到一个文件中:

if $fromhost-ip startswith '192.168.117.' then {
    action(type="omfile" file="/var/log/network.log")
    stop
}

(我的其余部分/etc/rsyslog.conf是默认的。)

以下不起作用。(未创建文件):

template (name="DynFile" type="string" string="/var/log/network-%fromhost-ip%.log")
if $fromhost-ip startswith '192.168.117.' then {
    action(type="omfile" file="DynFile")
    stop
}

我错过了什么?

答案1

解决方法是dynaFile行动论点(不是file)。

template (name="DynFile" type="string" string="/var/log/network-%fromhost-ip%.log")
if $fromhost-ip startswith '192.168.117.' then {
    action(type="omfile" dynaFile="DynFile")
    stop
}

这将产生预期的结果:

$ ls -l /var/log/network/    
-rw-r--r--. 1 root root       286 Oct  4 13:21 192.168.117.21.log    
-rw-r--r--. 1 root root       284 Oct  4 13:25 192.168.117.22.log
-rw-r--r--. 1 root root       184 Oct  4 13:32 192.168.117.27.log
$

相关内容