使用 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 包