【Azure 事件中心】關(guān)閉或開(kāi)啟Azure Event Hub SDK中的日志輸出

問(wèn)題描述

使用Azure Event Hub的Java SDK 作為消費(fèi)端消費(fèi)消息,集成在項(xiàng)目中后,發(fā)現(xiàn)大量日志產(chǎn)生,并且都是Debug 級(jí)別日志,如何來(lái)關(guān)閉這部分日志輸出呢?

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();

在應(yīng)用啟動(dòng)后,輸出了大量Event Hub SDK中的日志,導(dǎo)致產(chǎn)生大量日志內(nèi)容,干擾正常的業(yè)務(wù)日志,需要關(guān)閉。


image.png

問(wèn)題解答

這是因?yàn)镋vent Hub SDK使用的日志也是使用 log4j 輸出日志,所以當(dāng)整個(gè)項(xiàng)目配置 log4j.properties 的日志級(jí)別定義為Debug后, Event Hub SDK中所記錄的日志同樣輸出到Console頁(yè)面。 當(dāng)不需要DEBUG級(jí)別日志的時(shí)候,只需要在配置文件中去掉即可!

在log4j.properties中去掉 debug 配置即可。改為 error 或者是 Warn級(jí)別,既能減少日志輸出!


image.png
og4j.rootCategory=INFO, stdout , R

此句為將等級(jí)為INFO的日志信息輸出到stdout和R這兩個(gè)目的地,
stdout和R的定義在下面的代碼,可以任意起名。
等級(jí)可分為OFF、FATAL、ERROR、WARN、INFO、DEBUG、ALL,
如果配置OFF則不打出任何信息,
如果配置為INFO這樣只顯示INFO, WARN, ERROR的log信息,
而DEBUG信息不會(huì)被顯示

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

此句為定義名為stdout的輸出端是哪種類型,有:
org.apache.log4j.ConsoleAppender(控制臺(tái))
org.apache.log4j.FileAppender(文件)
org.apache.log4j.DailyRollingFileAppender(每天產(chǎn)生一個(gè)日志文件)
org.apache.log4j.RollingFileAppender(文件大小到達(dá)指定尺寸的時(shí)候產(chǎn)生一個(gè)新的文件)
org.apache.log4j.WriterAppender(將日志信息以流格式發(fā)送到任意指定的地方)

參考文件

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

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容