问题描述

使用Azure Event Hub的Java SDK 作为消费端消费消息,集成在项目中后,发现大量日志产生,并且都是Debug 级别日志,如何来关闭这部分日志输出呢?

import com.azure.messaging.eventhubs.EventHubClientBuilder;

import com.azure.messaging.eventhubs.EventProcessorClient;

import com.azure.messaging.eventhubs.EventProcessorClientBuilder;

import com.azure.messaging.eventhubs.checkpointstore.blob.BlobCheckpointStore;

import com.azure.messaging.eventhubs.models.EventContext;

import com.azure.storage.blob.BlobContainerAsyncClient;

import com.azure.storage.blob.BlobContainerClientBuilder;

import lombok.extern.slf4j.Slf4j;

import org.springframework.stereotype.Component;

@component

@slf4j

public class AzureDeviceLifecycleListener {

private static String connectionString = "Endpoint=*****";

private static String storageConnectionString = "******";

private static String storageContainerName = "*******";

private static BlobContainerAsyncClient blobContainerAsyncClient = new BlobContainerClientBuilder()

.connectionString(storageConnectionString)

.containerName(storageContainerName)

.buildAsyncClient();

private static EventProcessorClient eventProcessorClient;

private static void doProcessEvent(EventContext eventContext) {

byte[] body = eventContext.getEventData().getBody();

System.out.println("body string: " + new String(body));

}

public static void main(String[] args) {

eventProcessorClient = new EventProcessorClientBuilder()

.consumerGroup(EventHubClientBuilder.DEFAULT_CONSUMER_GROUP_NAME)

.connectionString(connectionString)

.checkpointStore(new BlobCheckpointStore(blobContainerAsyncClient))

.processEvent(AzureDeviceLifecycleListener::doProcessEvent)

.processError(errorContext -> log.error("Error occurred while processing azure events " + errorContext.getThrowable().getMessage()))

.buildEventProcessorClient();

在应用启动后,输出了大量Event Hub SDK中的日志,导致产生大量日志内容,干扰正常的业务日志,需要关闭。

 

问题解答

这是因为Event Hub SDK使用的日志也是使用 log4j 输出日志,所以当整个项目配置 log4j.properties 的日志级别定义为Debug后, Event Hub SDK中所记录的日志同样输出到Console页面。 当不需要DEBUG级别日志的时候,只需要在配置文件中去掉即可!

在log4j.properties中去掉 debug 配置即可。改为 error 或者是 Warn级别,既能减少日志输出!

og4j.rootCategory=INFO, stdout , R

此句为将等级为INFO的日志信息输出到stdout和R这两个目的地,

stdout和R的定义在下面的代码,可以任意起名。

等级可分为OFF、FATAL、ERROR、WARN、INFO、DEBUG、ALL,

如果配置OFF则不打出任何信息,

如果配置为INFO这样只显示INFO, WARN, ERROR的log信息,

而DEBUG信息不会被显示

log4j.appender.stdout=org.apache.log4j.ConsoleAppender

此句为定义名为stdout的输出端是哪种类型,有:

org.apache.log4j.ConsoleAppender(控制台)

org.apache.log4j.FileAppender(文件)

org.apache.log4j.DailyRollingFileAppender(每天产生一个日志文件)

org.apache.log4j.RollingFileAppender(文件大小到达指定尺寸的时候产生一个新的文件)

org.apache.log4j.WriterAppender(将日志信息以流格式发送到任意指定的地方)

 

参考文件

java日志文件log4j.properties配置详解: https://www.cnblogs.com/cuiqq/p/11175975.html

 

好文推荐

评论可见,请评论后查看内容,谢谢!!!评论后请刷新页面。