Springboot整合log4j2并将日志发送到flume

springboot整合log4j2大体步骤是很简单的,只是中间有一些小细节需要注意。

首先pom文件中增加log4j2

<dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-log4j2</artifactId>
    </dependency>

要在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>

然后在resource下增加log4j2的配置文件log4j2.xml.

然后在默认配置文件application.properties中指定一下log4j2的配置文件:

logging.config=classpath:log4j2.xml

这里需要注意一下,按照官方文档的说法,是会自动发现日志的配置文件的,在开发调试过程中也确实是这样。但是如果要打成war包部署到tomcat中,而且是linux下的tomcat。就会有问题,手动指定一下才会生效。如果只是打jar包通过main方法启动是没有问题的。

至此springboot整合log4j2就基本完成了。

然后在log4j2中配置flume

还是从pom文件开始:

<dependency>
      <groupId>org.apache.logging.log4j</groupId>
      <artifactId>log4j-flume-ng</artifactId>
	</dependency>
    <dependency>
     <groupId>org.apache.flume</groupId>
      <artifactId>flume-ng-embedded-agent</artifactId>
      <version>1.7.0</version>
      <exclusions>
      	<exclusion>
      		<groupId>org.slf4j</groupId>
      		<artifactId>slf4j-api</artifactId>
      	</exclusion>
      	<exclusion>
      		<groupId>org.slf4j</groupId>
      		<artifactId>slf4j-log4j12</artifactId>
      	</exclusion>
      	<exclusion>
      		<groupId>log4j</groupId>
      		<artifactId>log4j</artifactId>
      	</exclusion>
      </exclusions>
    </dependency>

log4j2支持的flume是embedded模式的,所以加入flume-ng-embedded-agent

然后log4j2的配置文件中加入flumeAppend

<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="WARN">
  <Appenders>
    <Console name="Console" target="SYSTEM_OUT">
      <PatternLayout pattern="%d{yyyy-MM-dd HH:mm:ss SSS} [myapp] %m%n"/>
    </Console>
    <Flume name="FlumeAppender" compress="false" type="Embedded" >
      <Property name="channel.type">memory</Property>
      <Property name="channel.capacity">200</Property>
      <Property name="sinks">agent1</Property>
      <Property name="agent1.type">avro</Property>
      <Property name="agent1.hostname">192.168.0.100</Property>
      <Property name="agent1.port">44444</Property>
      <Property name="agent1.batch-size">100</Property>
      <Property name="processor.type">failover</Property>
      <PatternLayout charset="UTF-8" pattern="%d{yyyy-MM-dd HH:mm:ss SSS} [myapp] %m%n" />
    </Flume>
  </Appenders>
  <Loggers>
    <Logger name="sysLog" level="trace">
      <AppenderRef ref="FlumeAppender"/>
    </Logger>
    <Root level="info">
      <AppenderRef ref="Console"/>
    </Root>
  </Loggers>
</Configuration>

好了,结束!

  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值