如何将日志文件输出重定向到网络套接字?

如何将日志文件输出重定向到网络套接字?

我正在使用一款商业 Java 应用程序,它使用 log4j 编写日志文件。我想将这些日志文件条目放入 Syslog 中,我们在 Syslog 中设置了特定的过滤器以触发系统事件。

Log4j 没有直接将其输出传递到 syslog 的方法。我遇到的两种方法涉及破解“catalina.sh”(无论其包含什么;还没有查看)脚本,另一种方法是编译自定义 Java 类以与 log4j 交互。

似乎更简单的解决方案可能是将 log4j 输出文件符号链接到 FIFO 或管道,然后将其内容发送到监听网络端口的 syslogd(或可能是 netcat)。关于如何连接它,您有什么想法吗?

答案1

我建议你考虑使用日志存储为此。它可以使用文本日志文件并将日志条目传输到各种其他系统,包括系统日志

您也许能够使用 netcat 或类似工具来破解某些东西,但从长远来看,使用专门构建的工具(如 logstash)会更好。

除了作为日志传输之外,logstash 还可以根据需要整理日志条目以添加其他数据(主机名等)。

答案2

最好的办法是设置本地 syslog 服务器来读取文件并将它们发送到远程位置。我已广泛使用 syslog-ng、rsyslog 和 nxlog 来实现此目的。快速浏览一下 google 就会发现 syslogd 应该也能做到这一点。

相关内容