Log4j2的flume appender配置

.由于log4j2比1.x版本的效率据说要高,头疼于日志量太大拖系统资源所以决定试试log4j2,而flume appender就是直接把日志输出到flume agent的方法。
此前使用flume自带的tools——flume-ng-log4jappender,通过在在配置文件中引用其FlumeAppender实现类即可,关于此的文章有很多就不赘述。不过在了解过log4j2后发现,log4j2自带了一个flumeAppender的扩展包,所以自然考虑直接用log4j2提供的flumeAppender插件(事实上你没办法直接用此前的flume-ng-log4jappender,因为log4j2实现appender的结构都已经不同了)。

本文基于的flume版本为1.6.0,log4j 版本为2.3,为叙述方便,以下就不带版本号了。

网上关于log4j2配置flume appender的资料实在太少,log4j2上提供的flume appender的资料不全而且可能有版本滞后之嫌,对现有flume版本是不适用的。当然你可能奇怪为什么要考虑flume的版本,因为log4j提供的FlumeAppender是不带依赖包的,和flume/tools下的flume-ng-log4jappender-1.6.0-jar-with-dependencies.jar可不同,所以你需要大量引入依赖的类,虽然这些包都可以在flume/lib下找到,不过如果你把其下的包都引用的话可能产生一些版本不同的包冲突,所以之后我会把依赖的包详细列出。

一个简单的配置:

......
<appenders>
        <!--这个输出控制台的配置 -->
        <Console name="Console" target="SYSTEM_OUT">
            <!--控制台只输出level及以上级别的信息(onMatch),其他的直接拒绝(onMismatch) -->
            <ThresholdFilter level="debug" onMatch="ACCEPT" onMismatch="DENY" />
            <!--这个都知道是输出日志的格式 -->
            <PatternLayout pattern="%d{yyyy-MM-dd HH:mm:ss SSS} %-5level - %-18.18c{2} - %msg%xEx%n" />
        </Console>
        <!--flume appender的配置,此处采用Avro类型 -->
        <Flume name="FlumeAppender" compress="false" type="Avro" >
        <Agent host="192.168.2.111" port="4444"/>
        <PatternLayout pattern="%d{yyyy-MM-dd HH:mm:ss SSS} %-5level - %-18.18c{2} - %msg%xEx%n" />
      </Flume>
    </appenders>
    <loggers>
        <!--建立一个默认的root的logger -->
        <root level="debug">
            <appender-ref ref="Console" />
        </root>
        <!--该logger专为某个类使用,使用了上面定义的FlumeAppender -->
        <logger name ="com.ifp.test.testAction" level="debug" additivity="false">
        <appender-ref ref="Console" />
         <appender-ref ref="FlumeAppender"  />
        </logger>
    </loggers>
    ......

要注意你的flume agent所配置的source只能是avro类型,这无关你appender如何配置。

这个是最容易使用的配置,不过log4j的官方文档中连个example都没有,这次使用log4j似乎比较推荐的embedded类型来实现:

<?xml version="1.0" encoding="UTF-8"?>
<configuration status="ERROR">
<appenders>
    <Console name="Console" target="SYSTEM_OUT">
            <ThresholdFilter level="debug" onMatch="ACCEPT" onMismatch="DENY" />
            <PatternLayout pattern="%d{yyyy-MM-dd HH:mm:ss SSS} %-5level - %-18.18c{2} - %msg%xEx%n" />
    </Console>
    <Flume name="FlumeAppender" compress
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值