Почему syslog4j игнорирует определенные сообщения?
Я использую syslog4j (текущая версия от 2011 года) для получения сообщений системного журнала. Очевидно, что некоторые из них не обрабатываются, и я вижу, используя wireshark, что они покидают исходный сервер и попадают на мой сервер, на котором выполняется программа syslog4j.
К сожалению, я ограничен использованием syslog с udp, так как это единственная конфигурация, которую поддерживает отправитель. Но, как я вижу пакеты в wireshark, это, похоже, не является причиной проблемы.
Моя программа выглядит так:
SyslogServerIF syslogServer = SyslogServer.getInstance("udp");
SyslogServerConfigIF syslogServerConfig = syslogServer.getConfig();
syslogServerConfig.addEventHandler( new MyEventHandler());
SyslogServer.getThreadedInstance("udp");
while (true) {
SyslogUtility.sleep(1000);
}
Моя (сокращенная) версия обработчика написана так:
public class MyEventHandler implements SyslogServerSessionEventHandlerIF {
public void event(Object session, SyslogServerIF syslogServer,
SocketAddress socketAddress, SyslogServerEventIF event) {
System.out.println("event.msg : " + event.getMessage());
System.out.println("event.date: " + event.getDate());
}
}
В приложении отсутствует высокая нагрузка (около 100 сообщений за 5 минут), но от 10 до 20% сообщений теряются.