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

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

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

任何帮助,将不胜感激…

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

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

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