• 【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

  • 相关阅读:
    观光公交
    审查(银)
    小木棍 && 愤怒的小鸟
    SDOI2008 仪仗队 && SDOI2012 Longge的问题 && q
    斗地主 && Mayan游戏 && 作业调度方案
    过河
    跳跳棋
    count
    Cow Tennis Tournament
    luogu P1534不高兴的津津(升级版)
  • 原文地址:https://www.cnblogs.com/lulight/p/16167047.html
Copyright © 2020-2023  润新知