使用 java.util.logging 处理程序记录到 syslog 的最现代方式是啥?

Posted

技术标签:

【中文标题】使用 java.util.logging 处理程序记录到 syslog 的最现代方式是啥?【英文标题】:What is the most modern way to log to syslog using a java.util.logging handler?使用 java.util.logging 处理程序记录到 syslog 的最现代方式是什么? 【发布时间】:2011-06-01 20:00:26 【问题描述】:

我专门为java.util.logging 寻找最新的、现代的SysLogHandler

我发现了一些可以追溯到 2001 年 - 2003 年的版本,现在大多不受支持。

我知道syslog 是一个相当静态的服务,在我自己写东西之前,我想知道是否有任何更新的处理程序实现支持 Java 1.5 和更新的功能。

对任何其他日志框架或包装器/代理库感兴趣。

在寻找 SLF4J 或任何其他替代日志框架,正如 question 中所建议的那样。

【问题讨论】:

你可以写一些代码来做。或者使用已经可以做到这一点的库。由于 Java 不能开箱即用。 我知道你不是在寻找 SLF4J,但我仍然衷心推荐它,即使你将在下面使用 util-logging。 自己写吧,可能比这里讨论的时间少。我知道,如果我需要一个处理程序,我就自己写。 java.util.logging 在 java5 中几乎没有改变,在 6_18 中他们对记录器做了一些弱引用。 【参考方案1】:

我遇到了同样的问题 - 我需要 java.util.logging.Handler

的 Syslog 扩展类

在互联网上搜索但没有成功后,我最终创建了自己的实现 - http://code.google.com/p/agafua-syslog/,支持 UDP 和 TCP 协议。我在生产项目中使用它。

【讨论】:

要与tomcat一起使用,它应该安装到$CATALINA_HOME/endorsed 由于谷歌代码项目被弃用迁移到rusv.github.io/agafua-syslog【参考方案2】:

在一项旧工作中,我使用了 Syslog4j 库并为其连接了一个自定义 Log4j-appender,因此您可以通过实现一个传递消息的自定义 java.util.logging.Handler 来做类似的事情。

【讨论】:

syslog4j 链接似乎已损坏 :-(【参考方案3】:

Syslog(至少在 Linux 上)在 UDP 端口上侦听输入(默认为 514/udp)。

所以实现一个Handler,它将格式化的消息发送到这个端口。我使用了现有的 SocketHandler 作为参考,并围绕 DatagramSocket 实现了一个替代方案。我的全押大约有 200 行。

【讨论】:

以上是关于使用 java.util.logging 处理程序记录到 syslog 的最现代方式是啥?的主要内容,如果未能解决你的问题,请参考以下文章

Undertow java.util.logging:如何使用 java util logging 在运行时更改 undertow 服务器的日志记录级别

java.util.logging FileHandler.count 不工作

使用 java.util.logging 的好例子 [关闭]

在 Swing 应用程序中使用 java.util.logging 包

Java程序日志:java.util.logging.Logger类

春季迁移后,带有“java.util.logging”的Tomcat日志停止工作