6

我正在考虑将第 3 方 Java 应用程序连接到我们的日志聚合/分析解决方案(可能是 Splunk,但我们尚未最终确定我们的选择)。将 Splunk 代理挂接到 syslog 似乎是最简单的方法,因此我正在寻找一种方法将应用程序日志重定向到服务器上的本地 syslog 守护程序。

Java 应用程序使用 java.util.logging,遗憾的是它没有开箱即用的 syslog 处理程序(不过我相信 log4j 有)。有没有经过验证的库可以做到这一点?日志负载不是很大(每个进程可能每分钟 10-20 条消息,每个主机最多 6 个进程),但我关心的是可靠性和持久性(例如,当守护进程关闭时会发生什么?...)。

任何帮助,将不胜感激...

4

2 回答 2

8

SLF4J 有一个桥梁,用于将java.util.logging事件传递给 SLF4J(因此也传递给 log4j 或 logback),您可以使用它。它有性能成本(请参阅链接),但考虑到您的负载,这应该没什么大不了的。因此,您可以使用 Log4J SyslogAppender(或者更好的是它的继任者logback,它也有一个SyslogAppender)。我对这个 appender 没有任何经验(所以这可能需要一些测试)但 logback 绝对是一个可靠的库,我知道它可以配置为不使用“nopexception”或“nopex”转换字打印堆栈跟踪(在在守护进程关闭时发送消息的情况下会产生一些异常)。将此附加程序与另一个附加程序(例如基于文件)耦合将不会丢失任何消息。

于 2010-02-22T16:44:27.400 回答
4

我们的项目也在使用 java.util.Logging 机制,所以,在花了一些时间找到 syslog 协议的现成 Handler 实现之后,我最终阅读了 RFC 3164 并创建了自己的实现http://code.google.com/ p/agafua-系统日志/

我们在生产中使用它,包括 UDP 和 TCP 传输。在我们的例子中,日志消息流大约是每秒 1-2 msg,所以我想它可能适用于您的需求。

于 2012-10-07T20:26:48.573 回答