springboot中log4j2写日志到flume中

    springboot默认的日志实现采用的是logback,但logback官方没有支持flume,所以就采用log4j2。

    我用的springboot是1.5.12版本的,首先要修改springboot的日志jar包,主要是不用springboot默认的日志,采用log4j2。

<dependency>
	<groupId>org.springframework.boot</groupId>
	<artifactId>spring-boot-starter-web</artifactId>
	<!-- 不引入默认的日志 -->
	<exclusions>
	  <exclusion>
		<groupId>org.springframework.boot</groupId>
		<artifactId>spring-boot-starter-logging</artifactId>
	  </exclusion>
	</exclusions>
</dependency>
<dependency>
	<groupId>org.mybatis.spring.boot</groupId>
	<artifactId>mybatis-spring-boot-starter</artifactId>
	<version>1.3.2</version>
	<!-- 不引入默认的日志 -->
	<exclusions>
	  <exclusion>
		<groupId>org.springframework.boot</groupId>
		<artifactId>spring-boot-starter-logging</artifactId>
	  </exclusion>
	</exclusions>
</dependency>

<dependency> <!-- 引入log4j2依赖 -->  
	<groupId>org.springframework.boot</groupId>  
	<artifactId>spring-boot-starter-log4j2</artifactId>  
</dependency>  

<!-- 写入flume就靠这个jar包了 -->
<dependency>
  <groupId>org.apache.logging.log4j</groupId>
  <artifactId>log4j-flume-ng</artifactId>
</dependency>    

    接下来在log4j2.xml中配置flume的相关信息,这边我采用avro的方式传日志:

<?xml version="1.0" encoding="UTF-8"?>
<!--设置log4j2的自身log级别为warn-->
<!--日志级别以及优先级排序: OFF > FATAL > ERROR > WARN > INFO > DEBUG > TRACE > ALL -->
<!--Configuration后面的status,这个用于设置log4j2自身内部的信息输出,可以不设置,
    当设置成trace时,你会看到log4j2内部各种详细输出-->
<!--monitorInterval:Log4j能够自动检测修改配置 文件和重新配置本身,设置间隔秒数-->
<configuration status="warn" monitorInterval="30">
    <!--先定义所有的appender-->
    <appenders>
        <!--这个输出控制台的配置-->
        <console name="Console" target="SYSTEM_OUT">
            <!--输出日志的格式-->
            <PatternLayout pattern="[%d{HH:mm:ss:SSS}] [%p] - %l - %m%n"/>
        </console>
        
        <Flume name="eventLogger" compress="true" type="avro">
	      <Agent host="10.10.10.10" port="4444"/>
	      <Agent host="10.10.10.11" port="4444"/>
	      <RFC5424Layout enterpriseNumber="18060" includeMDC="true" appName="MyApp"/>
	    </Flume>
 
    </appenders>
    <!--然后定义logger,只有定义了logger并引入的appender,appender才会生效-->
    <loggers>
        <root level="all">
            <appender-ref ref="Console"/>
            <AppenderRef ref="eventLogger"/>
        </root>
    </loggers>
 
</configuration>

    flume的配置的话,只要把source改成avro即可。我采用的是flume1.8。下面是我写的flume配置,主要是用于测试,所以直接打印出来了:

agent1.sources = s1
agent1.sinks = k1 k2 k3
agent1.channels = c2

# Describe/configure the source
agent1.sources.s1.type = avro
agent1.sources.s1.bind = 10.1.12.42
agent1.sources.s1.port = 4444

agent1.sinks.k2.type = logger
agent1.sinks.k2.maxBytesToLog = 4096

agent1.channels.c2.type=memory
agent1.channels.c2.capacity=10000
agent1.channels.c2.transactionCapacity=10000

# Bind the source and sink to the channel
agent1.sources.s1.channels = c2
agent1.sinks.k2.channel = c2
    亲测有效~
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值