flume支持拦截器(interceptors)机制,是在source这个层面上工做,这里有两个拦截器java
1,支持将日志体(event body)里面的字符串替换成另外一个字符串。配置文件http://git.oschina.net/atuchow/flume-additional/blob/master/src/test/resources/local2hdfs.confgit
中的a1.sources.r1.interceptors.i3 部分。.net
只支持两个功能,第一次替换和所有替换。替换的字符串必须用unicode编办的方式编写。代码:http://git.oschina.net/atuchow/flume-additional/blob/master/src/main/java/com/fone/flumeExt/interceptor/RegexReplaceAllInterceptor.java日志
2,将 event header中的时间戳和日志名称做转换。配置文件local2hdfs.conf中的a1.sources.r1.interceptors.i4 部分。code
时间戳转换成以 年 月 日 时 分 秒 (fy fm fd fh fmin fs 为key)的方式,直接用 enevnt.getHeaders().get(“fy”)就能够取得年继承
另外,还提供转换 log name的功能,经过继承AvroHeaderInterceptor就能够扩展提供log name的转换,给公司写的组件提供经过配置文件的方式转换,这里只有一个default的功能,不作任何转换直接输出。代码:http://git.oschina.net/atuchow/flume-additional/blob/master/src/main/java/com/fone/flumeExt/interceptor/DefaultAvroHeaderInterceptor.javaunicode