問(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