【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

 

posted @ 2022-04-19 19:51  路边两盏灯  阅读(143)  评论(0编辑  收藏  举报