【Azure 事件中心】关闭或开启Azure Event Hub SDK中的日志输出

问题描述

使用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