gpt4 book ai didi

java - SyslogServer 未接收 UDP 消息

转载 作者:行者123 更新时间:2023-12-01 09:31:35 24 4
gpt4 key购买 nike

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

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 上执行命令:

java -jar syslog4j-0.9.46.jar -h 127.0.0.1 -p 514 udp

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

SyslogServer.main(new String[]{"-h", "127.0.0.1", "-p", "514", "udp"});

我在 Syslog4j 0.9.46 文档中检查了以下术语:SyslogServerIFAbstractSyslogServerUDPNetSyslogServer。其中每一个都只包含返回值、参数以及方法抛出的内容,没有任何描述。我还搜索了常见问题解答和提供的示例 http://www.syslog4j.org/ ,但都与服务器无关。

所以我的问题是。如何让 UDP 系统日志服务器运行而无需从 SyslogServer 调用 main 方法?我不使用任何自定义处理程序。

最佳答案

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

SyslogServerIf server = SyslogServer.getInstance("udp");
SyslogServerConfigIf config = server.getConfig();
config.addEventHandler(new PrintStreamSyslogServerEventHandler(System.out));
syslogServer.run();

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

关于java - SyslogServer 未接收 UDP 消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39363682/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com