要是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。
