使用(r)syslog的dynamic文件生成

我正在将(r)syslog服务器configuration为从各种客户端接收日志的远程服务器。

我想知道是否有一个更好的方法来dynamic生成多个文件名,而不是创build一个模板的任何facility.priority其文件名应该dynamic创build。

$template FILENAME,"/var/log/%fromhost-ip%/syslog.log" kern.* ?FILENAME 

除此之外,我是否必须明确地告诉服务/守护进程使用TCP以便通过使用(r)syslogd的TCP进行日志logging? 就像当我closures服务器接收UDP数据包的能力时,它会停止logging任何东西。 或者换个说法:

 kern.* @loghost 

不起作用。

从手册页:

  To forward messages to another host via UDP, prepend the hostname with the at sign ("@"). To forward it via plain tcp, prepend two at signs ("@@"). 

所以改变你的configuration线如下所示:

 kern.* @@loghost 

并告诉rsyslog重新读取configuration文件。

是的,模板是在rsyslog中生成dynamic文件名的标准和推荐的方法。 它们允许从逻辑上将文件名格式与动作分开,并向您的configuration引入清晰的结构。

关于技术合作计划, 珍妮D已经给了你正确的答案。 请注意,您的主机需要支持TCP上的系统日志。 系统日志最初是基于UDP的,所以根据您在主机上运行的syslog守护进程的版本,某些甚至全部都可能无法使用TCP。 TCP由rsyslog和syslog-ng支持。

对于rsyslog的额外参考,RedHat有相当不错的文档 。