[英]How to enable debug in slf4j Logger?
如何全局啟用所有slf4j.Logger
對象的debug
?
以編程方式,使用 logback:
setLoggingLevel(ch.qos.logback.classic.Level.DEBUG);
在哪里
public static void setLoggingLevel(ch.qos.logback.classic.Level level) {
ch.qos.logback.classic.Logger root = (ch.qos.logback.classic.Logger) org.slf4j.LoggerFactory.getLogger(ch.qos.logback.classic.Logger.ROOT_LOGGER_NAME);
root.setLevel(level);
}
存在切換調試登錄的各種功能:
這篇文章對所有這些都有很好的解釋。 對我來說合適的是:
將 slf4j 與 Log4j 記錄器一起使用
創建文件src/main/resources/log4j.properties
log4j.rootLogger=DEBUG, STDOUT
log4j.logger.deng=INFO
log4j.appender.STDOUT=org.apache.log4j.ConsoleAppender
log4j.appender.STDOUT.layout=org.apache.log4j.PatternLayout
log4j.appender.STDOUT.layout.ConversionPattern=%5p [%t] (%F:%L) - %m%n
使用 logback 作為 slf4j 綁定。
沒有配置文件的默認行為是將 DEBUG 及以上級別的所有事件記錄到 System.out。 有關詳細信息,請參閱http://logback.qos.ch/manual/configuration.html#automaticConf 。
對於 log4j
<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/" debug="true">
<!-- ============================== -->
<!-- Append messages to the console -->
<!-- ============================== -->
<appender name="CONSOLE" class="org.apache.log4j.ConsoleAppender">
<param name="Target" value="System.out"/>
<param name="Threshold" value="INFO"/>
<layout class="org.apache.log4j.PatternLayout">
<!-- The default pattern: Date Priority [Category] Message\n -->
<param name="ConversionPattern" value="%d [%t] %-5p %c - %m%n"/>
</layout>
</appender>
<appender name="web" class="org.apache.log4j.DailyRollingFileAppender">
<param name="Threshold" value="DEBUG"/>
<param name="Append" value="true"/>
<param name="File" value="${catalina.home}/logs/web.log"/>
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="%d [%t] %-5p %c - %m%n"/>
</layout>
</appender>
<category name="com.idc.scd" additivity="false">
<priority value="${log4j.category.com.mypackage}"/>
<appender-ref ref="web"/>
</category>
</log4j:configuration>
通過這種配置,您的所有“com.mypackage”日志都將寫入 catalina.home 下的“web.log”文件中。
取決於您使用的是什么綁定...如果它是 log4j,請查看http://logging.apache.org/log4j/1.2/manual.html及其配置章節
如果您使用 log4j 作為 slf4j 的綁定,您可以創建一個 log4j.xml(或 log4j.properties)文件並將其添加到類路徑中。 一個例子可能是:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">
<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/" debug="false">
<appender name="CONSOLE" class="org.apache.log4j.ConsoleAppender">
<param name="Target" value="System.out" />
<param name="Threshold" value="DEBUG" />
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="%d{HH:mm:ss,SSS} %-5p [%c{1}] %m%n" />
</layout>
</appender>
<root>
<appender-ref ref="CONSOLE" />
</root>
</log4j:configuration>
這是我通常用於使用 logback 設置日志記錄的示例配置。
Gradle 依賴項(同樣適用於 Maven)
compile group: 'org.slf4j', name: 'slf4j-api', version: '1.7.25'
compile group: 'ch.qos.logback', name: 'logback-classic', version: '1.2.3'
logback.xml
配置要放在項目的類路徑(src/main/resources)中
<configuration>
<statusListener class="ch.qos.logback.core.status.NopStatusListener" />
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
<layout class="ch.qos.logback.classic.PatternLayout">
<Pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36}.%M\(%line\) - %msg%n</Pattern>
</layout>
</appender>
<!-- enable debug only on org.hibernate.SQL package -->
<logger name="org.hibernate.SQL" level="debug" additivity="false">
<appender-ref ref="STDOUT" />
</logger>
<root level="info">
<appender-ref ref="STDOUT" />
</root>
</configuration>
如果你在 springboot 中使用 slf4j,你只需要在application.properties
中設置調試級別。
logging.level.root=DEBUG
您也可以通過設置logging.group
來設置特定部分。
想象一下,如果您在src/main/java/
中有com.pxample
、 com.example
、 com.dxample
並且您設置:
logging.group.mycustomgroup=com.pxample, com.example
logging.level.mycustomgroup=DEBUG
,然后只有com.pxample
, com.example
將為您顯示調試 output 。
只需將以下內容添加到application.properties
logging.level.org.springframework.web=DEBUG
logging.level.org.springframework.context=DEBUG
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.