[英]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 文件對於創建各種記錄器和處理程序很有用,讓您可以細粒度地控制哪些日志進入控制台,哪些日志進入文件:。
如果您使用的是 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.