我有一个希望不是太独特的问题。我正在尝试在Netty中设置一个syslog处理程序,但我有一个syslog源代码,它没有提供格式良好的单行syslog消息。
简而言之,syslog格式使用换行符作为分隔符,并且消息以小于字符'<'开头。
我在下面有一个简单的例子,说明正在生成的TCP流。我试图弄清楚如何将每一行或每一行解析为一帧。
<128>2014-02-03T12:00:00 localhost program[pid]: message
<128>2014-02-03T12:00:00 localhost program[pid]: message
<128>2014-02-03T12:00:00 localhost program[pid]: exception occurred
at package.Class.function:line
at package.Class.function:line
at package.Class.function:line
at package.Class.function:line
<128>2014-02-03T12:00:00 localhost program[pid]: message
一种想法是使用/修改DelimiterBasedFrameDecoder来查找\n<
,但保留&lt; \n
。在缓冲区上,如果没有更多数据排队,只需{{1}}。
另一个想法是将每一行作为一个单独的框架使用,然后将它们合并到另一个处理程序中,但我找不到这样做的例子。我也不知道Netty是否会保留用于重组大型工作池的帧序列。
建议?