如何处理Flume中的多行日志条目

时间:2013-04-16 12:25:31

标签: flume

我刚刚开始玩Flume。我有一个关于如何处理多行日志条目作为单个事件的问题。像错误条件期间的堆栈跟踪。 例如,将以下内容视为单个事件,而不是每行的一个事件

2013-04-05 05:00:41,280 ERROR(ClientRequestPool-PooledExecutionEngine-Id#4)[com.ms.fw.rexs.gwy.api.service.AbstractAutosysJob] 228794失败 显示java.lang.NullPointerException     at com.ms.fw.rexs.core.impl.service.job.ReviewNotificationJobService.createReviewNotificationMessageParameters(ReviewNotificationJobService.java:138) ....

我已将源配置为spooldir类型。

谢谢 苏曼

2 个答案:

答案 0 :(得分:0)

正如文档所述,spooldir源为输入数据中换行符分隔的每个字符串创建一个新事件。您可以根据http://flume.apache.org/FlumeDeveloperGuide.html#sink创建自己的接收器(请参阅code of spooldir source)来修改此行为。您需要实现解析算法,该算法能够根据某些标准检测消息的开始和结束行。

此外,还有其他来源,例如Syslog UDP和Avro,它们将整个收到的消息视为单个事件,因此您可以在不进行任何修改的情况下使用它。

答案 1 :(得分:0)

您想要考虑扩展假脱机源使用的行反序列化器,一种简单(但可能存在缺陷)的方法是在换行符上划分,但是将前缀为一定数量空格的行组合到前一行中线。

事实上,已经有一个Jira问题,有一个补丁: