1. 添加依赖
该依赖在需要记录日志的服务上添加,用以配置 Log4j2 的 Pulsar Appender
<dependency>
<groupId>org.apache.pulsar</groupId>
<artifactId>pulsar-log4j2-appender</artifactId>
<version>2.8.0</version>
</dependency>
Pulsar 客户端,在接收日志消息的服务添加
<dependency>
<groupId>org.apache.pulsar</groupId>
<artifactId>pulsar-client</artifactId>
<version>2.8.1</version>
</dependency>
2. 接收日志消息
这里是一个简单的接收方法
public void receive() {
Consumer<String> consumer = PulsarClient.builder()
.serviceUrl("pulsar://10.16.2.151:6650").build()
.newConsumer(Schema.STRING)
.topic("log")
.subscriptionName("topicGroup")
.subscriptionType(SubscriptionType.Shared)
.subscriptionInitialPosition(SubscriptionInitialPosition.Earliest)
.negativeAckRedeliveryDelay(60, TimeUnit.SECONDS)
.subscribe();
while (true) {
Message<String> message = consumer.receive();
logger.info("收到日志:{}", new String(message.getData()).trim());
consumer.acknowledge(message);
}
}
3. 配置 Log4j2
Configuration:
status: info
monitorInterval: 30
Appenders:
Console: # 输出到控制台
name: CONSOLE
target: SYSTEM_OUT
PatternLayout:
pattern: "%d{yyyy-MM-dd HH:mm:ss,SSS}:%5p %t (%F:%L) - %m%n"
Pulsar:
name: PULSAR
serviceUrl: pulsar://192.168.2.151:6650
topic: log
ignoreExceptions: false
avoidRecursive: false
syncSend: false
PatternLayout:
pattern: "%d{yyyy-MM-dd HH:mm:ss,SSS}:%5p %t (%F:%L) - %m%n" %m%n"
Loggers:
Root:
level: info
AppenderRef:
- ref: CONSOLE
Logger:
name: pulsarTest
level: info
AppenderRef:
- ref: PULSAR