簡體   English   中英

Java - 動態更改日志記錄級別

[英]Java - dynamically change logging level

我希望能夠告訴JVM在執行鏈中的某個點停止記錄某些級別的消息。 在某些時候我想只記錄具有SEVERE級別的消息,所以我想這樣做:

    for(Enumeration<String> loggerNames = logManager.getLoggerNames(); loggerNames.hasMoreElements();){
        String name = loggerNames.nextElement();
        Logger nextLogger = logManager.getLogger(name);
        if(nextLogger != null)
            nextLogger.setLevel(Level.SEVERE);
    }

有沒有更簡潔的方法來實現相同的邏輯,即設置一個全局變量,停止打印到日志除非嚴重? 我需要區分控制台輸出(在測試中)和實時文件輸出,所以我可能會在處理程序(控制台和文件)上設置這些級別?

回答我自己的問題:

這正是我所需要的:

Handler[] handlers =
  Logger.getLogger( "" ).getHandlers();
for ( int index = 0; index < handlers.length; index++ ) {
  handlers[index].setLevel( Level.SEVERE);
}

要動態控制應用程序配置,常用的方法是使用JMX。

JConsole是jdk的一部分,允許您手動控制MBean,但您也可以以編程方式訪問它們。

您可以使用JMX來控制MBean,如本頁所述

使用log4j,您可以更改根記錄器的級別。

這可能有效:

logManager.getLogger( "" ).setLevel(Level.SEVERE);

或使用Logger.getParent()查找根記錄器

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM