Mybatis在控制台打印不出SQL日志


要是mybatis項目打印出日志,只需要在log4j的配置文件中加上下面一段即可

1 log4j.logger.com.ibatis=debug 2 log4j.logger.com.ibatis.common.jdbc.SimpleDataSource=debug 3 log4j.logger.com.ibatis.common.jdbc.ScriptRunner=debug 4 log4j.logger.com.ibatis.sqlmap.engine.impl.SqlMapClientDelegate=debug 5 log4j.logger.java.sql.Connection=debug 6 log4j.logger.java.sql.Statement=debug 7 log4j.logger.java.sql.PreparedStatement=debug 8 log4j.logger.com.founder.centerbusiness=debug

注意,這段配置生效的前提是你配置了根記錄器

1 log4j.rootLogger=info,stdout

我就是弄了好半天都沒有輸出,原因是項目中只使用了一個

1 log4j.logger.business=debug,A,stdout

的日志記錄器,其他的日志由於沒有根記錄器,根部無法輸出來,切記。

log4j擴展知識:

1,rootLogger

總是存在一個rootLogger,即使沒有顯示配置也是存在的,並且默認輸出級別為DEBUG,所有其他的Logger都默認繼承自rootLogger。

2 自定義的Logger(子Loggger)繼承自rootLogger

格式如下:

log4j.logger.A.B.C

這樣定義后其實建立了3個logger實例,它們分別是"A"、"A.B"、"A.B.C"。每次我們在系統中取得logger時,並不是新建實例,這些實例是系統啟動的時候就按照配置文件初始化好的(也可能時第一次引用的時候建立的,然后緩存其實例供以后使用,這部分還沒有時間研究)。

調用:

Logger logger = Logger.getLogger("A.B")

3 限制appender疊加性

例1:

log4j.rootLogger=DEBUG, Console
log4j.logger.A=DEBUG, Console
log4j.logger.A.B=INFO, Console

對於logger A.B輸出的任何日志會往控制台輸出三次,原因是A.B繼承A的以及A的父logger的所有appender,這種繼承關系僅僅是把父logger的appender添加到自己的appender列表中,父logger的輸出level不會影響子logger的輸出。

例2:限制appender疊加

log4j.rootLogger=DEBUG, Console
log4j.logger.A=DEBUG, Console
log4j.logger.A.B=INFO, Console
log4j.additivity.A.B=false

logger A.B的日志僅會輸出到自己Console中,不會繼承任何父logger的appender。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM