flume+log4j收集日志

本文介绍了如何使用Log4j将数据发送到Flume的不同配置方式,包括单节点和集群模式。详细展示了配置示例,并讨论了如何处理节点故障以避免数据丢失。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

单节点

flume只有一个单节点时,如果通过log4j发送指定到端口收集数据。

   <!-- 目前使用集群模式 http://blog.youkuaiyun.com/hyx1990/article/details/49453271 -->

         <appendername="test" class="org.apache.flume.clients.log4jappender.Log4jAppender"> 

             <!-- 定义控制台日志级别入口--> 

             <param name="Hostname"value="172.20.1.106"/> 

             <param name="Port"value="6505"/>

             <param name="UnsafeMode"value="true"/>

        <param name="BufferSize"value="8192"/>

                   <paramname="ImmediateFlush" value="false"/>

                   <paramname="BufferedIO" value="true"/>               

             <layoutclass="org.apache.log4j.PatternLayout"> 

                 <paramname="ConversionPattern" value="%m" /> 

            </layout>

             <filterclass="org.apache.log4j.varia.LevelRangeFilter">  

           <param name="LevelMin" value="FATAL" />  

           <param name="LevelMax" value="FATAL" />  

       </filter>  

         </appender>

缺点:如果失败flume节点出现故障,会出现数据丢失,当然这种情况也可以从写日志的程序进行缓存处理。

 

flume集群

Flume采用集群的方式,但是这种情况会有很多问题,这里引用一个高手的测试情况:

http://blog.youkuaiyun.com/wsscy2004/article/details/18765491?utm_source=tuicool&utm_medium=referral

最后按照上面高手的。我们把对应的类打了一个jar包。这样就可以使用自定义的log4j的类

<appender name="test"class="org.apache.flume.clients.log4jappender.FailoverLog4jAppender">

               <param name="Hosts"value="datanode1:6505datanode2:6505 datanode3:6505"/>

               <param name="MaxAttempts"value="3"/>

        <layout class="org.apache.log4j.PatternLayout">

            <param name="ConversionPattern" value="%m"/>

        </layout>

    </appender>

     <appender name="asyncTest" class="org.apache.log4j.AsyncAppender">

           <param name="Blocking" value="false"/>

           <param name="BufferSize" value="500"/>

           <filter class="org.apache.log4j.varia.LevelRangeFilter">  

                     <param name="LevelMin"value="FATAL" />  

                     <param name="LevelMax"value="FATAL" />  

                </filter>

           <appender-ref ref="test"/>

       </appender>

但是需要很多依赖的jar

 

针对具体的某个类采用这种方式。(只收集特定的信息到flume中)

<logger name="com.sanshi.Test"additivity="true">       

       <level value="info" />  

       <appender-ref ref="asyncTest"/>       

    </logger>

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值