簡體   English   中英

使用 jdk 進行 slf4j 日志記錄 – 如何啟用調試?

[英]slf4j logging with jdk – how to enable debug?

默認情況下,slf4j 與 jdk ( slf4j-jdk14-1.6.1.jar ) 一起使用時,不會記錄調試消息。 如何啟用它們?

我在官方文檔、網絡或此處都找不到有關如何啟用它的信息。

我找到了一些關於(雖然失敗)在 %JDK_HOME%/lib 中創建文件並在配置文件中定義級別的信息。 但是,我想在編譯/運行時定義級別,這樣我就可以從具有不同日志級別的 IDE 運行和調試我的應用程序。

是不是有一些我可以設置的環境變量或VM arg?

為什么你認為它不記錄 DEBUG 消息?

如果您的意思是您的log.debug(String)日志調用不會出現在java.util.logging日志文件中,那么我想您必須配置logging.properties配置文件以允許FINE級別的日志消息。

如果您不想弄亂全局%JRE_HOME%/lib/logging.properties ,那么您可以在命令行上傳入-Djava.util.logging.config.file=logging.properties - 這將強制記錄系統在當前目錄中查找該配置文件。

或者使用其他(編程)方式來配置java.util.logging ,請參閱下面的教程。

這與配置 SLF4J 無關; 事實上,SLF4J 沒有任何配置,一切都是通過簡單的交換 JAR 文件來配置的。


供你參考:

如果您使用的是 slf4j SimpleLogger 實現,請閱讀此內容

在那里您可以看到simpleLogger使用INFO作為默認日志級別。 您可以使用系統屬性對其進行更改。 這對於非生產環境很有用:

static {

    System.setProperty("org.slf4j.simpleLogger.defaultLogLevel", "trace");
}

您可以將-Dorg.slf4j.simpleLogger.defaultLogLevel=debug添加到 VM 選項中。

我只是將我的 logging.properties 文件放在我的應用程序 WEB-INF/classes 文件中(或者如果你沒有在戰爭中部署,則使用由 Neeme Praks 標識的命令行參數),並在 eclipse 中打開屬性文件,這樣我就可以對其進行微調以記錄包和我感興趣的級別。

在 logging.properties 文件中,您需要確保記錄器級別和處理程序級別都設置為您想要的級別。 例如,如果您希望輸出到控制台,您至少需要具備以下條件:

#logging.properties file contents

#Define handlers
handlers=java.util.logging.ConsoleHandler

#Set handler log level
java.util.logging.ConsoleHandler.level=FINE

#Define your logger level
com.company.application.package.package.level=FINE

#Assign your handler to your logger
com.company.application.package.package.handlers=java.util.logging.ConsoleHandler

您提到了slf4j-jdk14-1.6.1.jar 這提供了與 java.util.logging 的 slf4j 綁定。 您需要在類路徑中包含它,但請確保您的類路徑中也包含 slf4j api ( slf4j-api-1.7.12.jar )。

我發現此鏈接中的示例 logging.properties 文件對於創建各種記錄器和處理程序很有用,讓您可以細粒度地控制哪些日志進入控制台,哪些日志進入文件:。

這是 slf4j 手冊

如果您使用的是 lombok Slf4j

 package com.space.slf4j;

    import lombok.extern.slf4j.Slf4j;
    import org.springframework.web.bind.annotation.RequestMapping;
    import org.springframework.web.bind.annotation.RestController;

    /**
     * @author anson
     * @date 2019/6/18 16:17
     */
    @Slf4j
    @RestController
    public class TestController {

        @RequestMapping("/log")
        public String testLog(){
            log.info("#########  info  #########");
            log.debug("#########  debug  #########");
            log.error("#########  error  #########");
            return null;
        }
    }

應用程序.yml

logging:
   level:
      root: debug

在運行時使用默認配置,您可以使用以下代碼啟用它:

public class MyTest {

static {
    Logger rootLogger = Logger.getLogger("");
    rootLogger.setLevel(Level.ALL);
    rootLogger.getHandlers()[0].setLevel(Level.ALL);

}

我在TestNG單元中使用此代碼。

暫無
暫無

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

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