log4j集成flume-ng
来源:互联网 发布:淘宝办学生证该搜索啥 编辑:程序博客网 时间:2024/05/18 16:39
flume-ng是时下比较流行的日志收集方案,log4j也是Java领域内常用的日志组件。那有什么简单的办法把他们结合起来呢?
- 背景:
通常,我们的应用程序已经在使用log4j来记录日志了,有一天我们的日志需要导入到其他地方(同时文本日志暂时也不想丢),用来分析(hdfs)或者检索(elasticsearch),我们就想到通过一个数据管道来做这件事情,flume似乎是一个不错的选择。
- 解决方案:
- 写log4j日志的同时,集成flume-ng的SDK,同时把日志写到flume中。好处是:日志的内容和格式都可以随便定义
- 使用log4j-flume-appender,日志输出到文本的同时,也输出到flume中。好处是:基本不需要更改代码,方便快捷
结合实际考虑,决定采用第二种方式,最快捷
- 实施步骤:
1. 引入需要的lib包
最简单的方式,当然是使用maven来引入了,同时就把依赖的jar包自动包含了
<dependency>
<groupId>org.apache.flume.flume-ng-clients</groupId>
<artifactId>flume-ng-log4jappender</artifactId>
<version>1.6.0</version>
</dependency>
2. 配置log4j.xml
需要注意,为了避免记录日志对于应用程序的阻塞,最好添加AsyncAppender(所以好像就不能通过property文件来配置log4j了)。
<appender name="flumeAppender" class="org.apache.flume.clients.log4jappender.LoadBalancingLog4jAppender">
<param name="hosts" value="172.16.113.225:4141 172.16.113.219:4141" />
<param name="UnsafeMode" value="true" />
<param name="maxBackoff" value="5000" />
<param name="timeout" value="3000" />
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="%d [%t] (%F:%L) %-5p %c - %m%n" />
</layout>
</appender>
<appender name="async" class="org.apache.log4j.AsyncAppender">
<param name="Blocking" value="false" />
<param name="BufferSize" value="500"/>
<appender-ref ref="flumeAppender" />
</appender>
我这里采用了负载均衡的log4jappender,如果是单节点的flume的话,appender修改如下即可:
<appender name="flumeAppender" class="org.apache.flume.clients.log4jappender.Log4jAppender">
<param name="hostname" value="203.195.236.154" />
<param name="port" value="8082" />
<param name="UnsafeMode" value="true" />
<param name="timeout" value="3000" />
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="%d [%t] (%F:%L) %-5p %c - %m%n" />
</layout>
</appender>
另外需注意:flume-ng-log4jappender对异常部分是忽略掉的,如果想要记录这部分异常信息,需要在log4j.error的时候,把exception信息附加到message中。
- log4j集成flume-ng
- flume-ng 实际应用例子,flume采集log4j日志
- flume-ng和kafka集成的配置
- log4j输出日志到flume-ng(个人记录)
- flume-ng
- Flume NG
- flume ng
- Flume-ng
- Flume OG & Flume NG
- log4j:ERROR Flume append() failed.(flume-ng-log4jappender-1.4.0.jar bug)
- Flume-ng在windows环境搭建并测试+log4j日志通过Flume输出到HDFS
- flume log4j
- log4j + flume
- log4j flume
- log4j ----->flume
- flume OG VS flume NG
- FLume NG 开发环境
- Flume NG configuration sample
- 基于Flume的野狗实时日志系统的演进和优化
- 用C语言实现通用链表
- 全卷积网络:从图像级理解到像素级理解-FCN图像分割边缘检测
- opencv 3.10 安装编译
- Linux下的Hive与Mysql安装
- log4j集成flume-ng
- Linux下C/C++编译器GCC/G++使用简介
- RAC环境下配置OGG同步
- elasticsearch 配置详解
- vi一个简单操作
- JLink和JFlash使用方法笔记
- SpringMVC的配置--controller
- ORA-03113 错误分析与解决
- 修改mysql root 密码