是否有一个强大的syslog的java.util.logging处理程序实现?

时间:2010-02-22 15:02:04

标签: java logging syslog java.util.logging

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

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

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

2 个答案:

答案 0 :(得分:8)

SLF4J有一个bridge用于将java.util.logging个事件传递给您可以使用的SLF4J(以及log4j或logback)。它有性能成本(参见链接)但是考虑到你的负载,这应该不是什么大问题。因此,您可以使用Log4J的SyslogAppender(或更好的继承者logback,它也有SyslogAppender)。我对这个appender没有任何经验(所以这可能需要一些测试)但是logback肯定是一个可靠的库,我知道它可以配置为不使用“nopexception”或“nopex”打印堆栈跟踪{{3} (如果守护进程关闭时发送消息会产生一些异常)。将此appender与另一个appender(例如基于文件)耦合将允许不丢失任何消息。

答案 1 :(得分:4)

我们的项目也使用了java.util.Logging机制,因此,在花了一些时间为syslog协议找到准备好的Handler实现之后,我最后阅读了RFC 3164并创建了我自己的实现http://code.google.com/p/agafua-syslog/

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