ELK简单入门-Log4j2
Posted 字痕随行
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ELK简单入门-Log4j2相关的知识,希望对你有一定的参考价值。
最近正好上项目,又赶上我正在看一本网络小说,所以时间挤都挤不出来了。
今天简单介绍一下日志的输入端,这里使用Log4j2来采集日志。
简单介绍一下SpringBoot和Log4j2的整合:
要排除掉SpringBoot自带的logging日志框架。
加入log4j2的starter。
pom文件如下:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
<exclusions>
<!--排除SpringBoot默认的日志框架-->
<exclusion>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-logging</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-log4j2</artifactId>
</dependency>
在resources文件夹下加入log4j2.xml文件,开启Kafka:
<appenders>
<kafka name="alarmKafka" topic="host" ignoreExceptions="false">
<patternLayout pattern="${alarm_pattern}"/>
<property name="bootstrap.servers">127.0.0.1:9092</property>
<!--默认kafka无法接收新消息会有30s的阻塞等待时间,手动配置缩短时间-->
<property name="timeout.ms">2000</property>
</kafka>
</appenders>
<loggers>
<root level="WARN">
<AppenderRef ref="console"/>
<AppenderRef ref="alarmKafka" />
</root>
</loggers>
以上配置虽然能够正常运行,但是如果Kafka宕机,日志就会丢失。此时,就需要一种容错手段。
我这边的场景是,如果Kafka宕机,就把日志写在本地指定的文件中,以便后续进行处理。
这时候,就需要启用Log4j2的Failover,具体的配置如下:
<appenders>
<kafka name="alarmKafka" topic="host" ignoreExceptions="false">
<patternLayout pattern="${alarm_pattern}"/>
<property name="bootstrap.servers">127.0.0.1:9092</property>
<property name="timeout.ms">2000</property>
</kafka>
<rollingFile name="failoverKafkaAlarmLog" fileName="/log/failoverKafka/log4jtest-alarm-request.log"
filePattern="/log/failoverKafka/log4jtest-alarm-request.%d{yyyy-MM-dd}.log">
<ThresholdFilter level="INFO" onMatch="ACCEPT" onMismatch="DENY"/>
<patternLayout>
<Pattern>${alarm_pattern}</Pattern>
</patternLayout>
<policies>
<TimeBasedTriggeringPolicy />
</policies>
</rollingFile>
<console name="console" target="SYSTEM_OUT">
<patternLayout>
<Pattern>[%-4level]%d{YYYY-MM-dd HH:mm:ss}:%m%n</Pattern>
</patternLayout>
</console>
<!--retryIntervalSeconds重试主appender ‘Kafka’距离上次失败得时间-->
<Failover name="alarmFailover" primary="alarmKafka" retryIntervalSeconds="60">
<Failovers>
<appenderRef ref="failoverKafkaAlarmLog"/>
</Failovers>
</Failover>
<!--异步-->
<Async name="kafkaAlarmLogger" level="INFO" additivity="false">
<appender-ref ref="alarmFailover"/>
</Async>
</appenders>
以上配置中的细节,有需要的可以自行百度,这里只是需要注意的是:
Kafka Appender中的ignoreExceptions一定要设置为false,另外这里log4j2 stater的版本是2.2.5.RELEASE。
其实我个人觉得这块没什么好说的,都是固定配置,不写错了就行,网络上的资料也很齐全,我这里只是做个记录而已。
以上,如有错误,欢迎指正。
以上是关于ELK简单入门-Log4j2的主要内容,如果未能解决你的问题,请参考以下文章