В данный момент я работаю над проектом по отслеживанию gps-устройств.Поскольку они связываются по TCP с помощью специального (двоичные данные, содержащие, например, html) протокола, netty был первым выбором.Но теперь мы сталкиваемся с некоторыми серьезными проблемами.
Поскольку нам приходилось регистрировать все полученные данные, улучшенные отладочными отпечатками, в разные файлы в зависимости от подключенных устройств, мы представили LogEvent, расширяющий ChannelStateEvent.Это был единственный подходящий способ для регистрации в любом месте конвейера с определенным файлом.
В настоящее время ведение журнала в основном работает следующим образом: channel.getPipeline (). SendUpstream (new LogEvent (channel, record))
Чтобы упростить и получить все возможности современных API-интерфейсов ведения журнала, мы обернули это в специальный класс ChannelLogger, который мы можем использовать следующим образом:
ChannelLogger.fine(channel, "...");
ChannelLogger.info(channel, "...");
ChannelLogger.warn(channel, "...", [Throwable]);
Мой вопрос заключается в том, как получить LogEvents, оставшиесятрубопровод, если канал был закрыт?
// handler 1
ChannelLogger.warn(channel, ...);
...
// handler 2
channel.close();
Закрытие выполняется немедленно, поэтому все оставшиеся данные в конвейере отбрасываются, таким образом, наши события журнала (в основном ошибки, описывающие, почему канал был закрыт) тоже.
Заранее спасибоЭрик