有没有办法使用 syslog-ng 将日志发送到特定目录?

有没有办法使用 syslog-ng 将日志发送到特定目录?

我想使用 syslog-ng 将每个应用程序的日志发送到远程收集器。

如果我有 Apache,我希望将 Apache 日志发送到文件中的远程收集器/var/log/apache.log

我找不到任何关于此的信息。我知道 rsyslog 是可能的,但我在这里唯一能做的就是将所有日志与以下内容一起发送:

destination remote { network("<collector_adress>" transport("udp") port(514)); };

答案1

要使用 syslog-ng 从文件收集日志,您必须创建文件源,并将它们添加到日志语句中。像这样的东西:

source s_apache {
    file("/var/log/apache.log");
};
log {
    source(s_apache); destination(remote);
};

要从其他文件收集日志,请定义其他源并将它们添加到日志语句中。如果您的应用程序登录到多个不同的日志文件(例如,登录到带时间戳的日志文件),则可以使用通配符文件源。检查文档了解详细信息:https://www.syslog-ng.com/technical-documents/doc/syslog-ng-open-source-edition/3.21/administration-guide/16#TOPIC-1180423

答案2

我认为你可以使用与中相同的方法Syslog-ng - 从客户端发送文件名到服务器

syslog-ng 中的客户端配置 -

file("/var/log/shell.log" log_prefix("shell: "));

syslog-ng 中的服务器端配置 -

filter f_shell { match("shell" value("MSGHDR")); };

destination d_shell { file("/var/log/syslog-ng/shell.log"); };

log { source(demo_tls_src); filter(f_shell); destination(d_shell); flags(final); };

相关内容