首先,需要引入依赖包:
<dependency>
<groupId>org.apache.kafka</groupId>
<artifactId>kafka-clients</artifactId>
<version>0.9.0.1</version>
</dependency>
如果配置文件是yml格式的,还需要这个依赖:
<dependency> <!-- 加上这个才能辨认到log4j2.yml文件 -->
<groupId>com.fasterxml.jackson.dataformat</groupId>
<artifactId>jackson-dataformat-yaml</artifactId>
</dependency>
yml格式的配置方法(文件名:log4j2.yml):
Configuration:
status: warn
Appenders:
Console: #输出到控制台
name: CONSOLE
target: SYSTEM_OUT
ThresholdFilter:
level: trace
onMatch: ACCEPT
onMismatch: DENY
PatternLayout:
pattern: "%d{yyyy-MM-dd HH:mm:ss,SSS}:%4p %t (%F:%L) - %m%n"
Kafka: #输出到Kafka
name: KAFKA
topic: test
ThresholdFilter:
level: error
onMatch: ACCEPT
onMismatch: DENY
PatternLayout:
pattern: "%d{yyyy-MM-dd HH:mm:ss,SSS}:%4p %t (%F:%L) - %m%n"
Property:
- name: bootstrap.servers
value: 192.168.0.9:9092
Loggers:
Root:
level: info
AppenderRef:
- ref: CONSOLE
- ref: KAFKA
Logger: # 为com.xjj包配置特殊的Log级别,方便调试
- name: com.xjj
additivity: false
level: trace
AppenderRef:
- ref: CONSOLE
- ref: KAFKA
- name: org.apache.kafka #听说这样可以避免递归调用
level: INFO
xml格式的配置方法(文件名:log4j2.xml):
<Configuration status="warn" monitorInterval="30" strict="true" schema="Log4J-V2.2.xsd">
<Appenders>
<!-- 输出到控制台 -->
<Console name="Console" target="SYSTEM_OUT">
<!-- 需要记录的级别 -->
<ThresholdFilter level="trace" onMatch="ACCEPT" onMismatch="DENY" />
<PatternLayout pattern="%d{yyyy-MM-dd HH:mm:ss,SSS}:%4p %t (%F:%L) - %m%n" />
</Console>
<!-- 输出错误日志到Kafka -->
<Kafka name="KAFKA" topic="test">
<ThresholdFilter level="error" onMatch="ACCEPT" onMismatch="DENY" />
<PatternLayout pattern="%d{yyyy-MM-dd HH:mm:ss,SSS}:%4p %t (%F:%L) - %m%n" />
<Property name="bootstrap.servers">192.168.0.9:9092</Property>
</Kafka>
</Appenders>
<Loggers>
<Root level="info"> <!-- 全局配置 -->
<AppenderRef ref="Console" />
<AppenderRef ref="KAFKA"/>
</Root>
<Logger name="com.xjj" level="trace" additivity="false">
<AppenderRef ref="Console" />
<AppenderRef ref="KAFKA"/>
</Logger>
<Logger name="org.apache.kafka" level="INFO" /> <!-- avoid recursive logging -->
</Loggers>
</Configuration>
大功告成。