首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SyslogServer未接收UDP消息

SyslogServer未接收UDP消息
EN

Stack Overflow用户
提问于 2016-09-07 07:24:55
回答 1查看 479关注 0票数 0

我目前正在使用Syslog4j 0.9.46来处理Syslog4j消息。我用它从命令行发送它们,现在我必须以某种方式接收它们。为此,我使用以下代码:

代码语言:javascript
复制
SyslogServerIF server = SyslogServer.getInstance("udp");
server.getConfig().setHost("127.0.0.1");
server.getConfig().setPort(514);
server.initialize("udp", server.getConfig());
server.run();
Thread.sleep(60*1000);

显然这还不够或者我做错了什么。要发送在jar上执行的syslog消息命令,请执行以下操作:

代码语言:javascript
复制
java -jar syslog4j-0.9.46.jar -h 127.0.0.1 -p 514 udp

我知道它们是正确发送的,因为运行以下代码可以接收它们:

代码语言:javascript
复制
SyslogServer.main(new String[]{"-h", "127.0.0.1", "-p", "514", "udp"});

我在Syslog4j 0.9.46文档中检查了以下术语:SyslogServerIFAbstractSyslogServerUDPNetSyslogServer。它们中的每一个都只包含返回值、参数和方法抛出的内容,而没有一个描述词。我还在http://www.syslog4j.org/上搜索了FAQ和提供的示例,但是没有一个是关于服务器的。

所以我的问题是。如何使UDP syslog服务器运行,而不必从SyslogServer调用主方法?我不使用任何自定义处理程序。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-09-07 10:34:25

经过大量的调试、咖啡和与我的橡皮鸭长时间的辩论,我终于找到了解决方案。在获取服务器实例时,Syslog4j不提供默认事件处理程序。对于子孙后代来说,他们将被迫面对同样的问题:

代码语言:javascript
复制
SyslogServerIf server = SyslogServer.getInstance("udp");
SyslogServerConfigIf config = server.getConfig();
config.addEventHandler(new PrintStreamSyslogServerEventHandler(System.out));
syslogServer.run();

添加此事件处理程序将在标准输出上打印传入的消息。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39363682

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档