Почему 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% сообщений теряются.

0 ответов

Другие вопросы по тегам