1.使用Log4jdbc-log4j2打印mybatis的sql語句
一、maven依賴
<!-- 日志文件管理包 --> <!-- log start --> <!-- log4j2的包,注意版本問題,lo4j-slf4j-impl對lo4j2包有版本要求,如果這里的包為2.0版本會出錯,找不到有些class --> <dependency> <groupId>org.apache.logging.log4j</groupId> <artifactId>log4j-api</artifactId> <version>2.3</version> <scope>compile</scope> </dependency> <dependency> <groupId>org.apache.logging.log4j</groupId> <artifactId>log4j-core</artifactId> <version>2.3</version> <scope>compile</scope> </dependency> <!-- log4jdbc監控jdbc層 --> <dependency> <groupId>org.bgee.log4jdbc-log4j2</groupId> <artifactId>log4jdbc-log4j2-jdbc4.1</artifactId> <version>1.16</version> </dependency> <!-- slf4j相關api --> <dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-api</artifactId> <version>1.7.5</version> </dependency> <!-- slf4j的log4j實現包 --> <dependency> <groupId>org.apache.logging.log4j</groupId> <artifactId>log4j-slf4j-impl</artifactId> <version>2.1</version> </dependency> <!-- log end -->
二、相關配置文件
log4jdbc.log4j2.properties
log4jdbc.spylogdelegator.name=net.sf.log4jdbc.log.slf4j.Slf4jSpyLogDelegator
jdbc驅動和url修改為
db.driverClassName=net.sf.log4jdbc.sql.jdbcapi.DriverSpy
db.url=jdbc:log4jdbc:mysql://localhost:3306/wechat_talk?useUnicode=true&characterEncoding=utf-8
log4j的相關配置xml或properties
log4j2.xml(部分)
<!-- sql 以及耗費的執行時間 --> <logger name="jdbc.sqltiming" level="INFO" additivity="false"></logger> <!-- 執行之后的返回結果 --> <logger name="jdbc.resultsettable" level="INFO"></logger> <!-- 只有sql --> <logger name="jdbc.sqlonly" level="OFF"></logger> <logger name="jdbc.audit" level="OFF"></logger> <logger name="jdbc.resultset" level="OFF"></logger> <!-- 能看到數據庫的連接數 --> <logger name="jdbc.connection" level="OFF"></logger>
2.關於LogManager.getLogger(),以及LogManager.getLogger(this),LogManager.getLogger(Class.class),LogManager.getLogger(Class.class.getName()),LogManager.getLogger(this.getClass);
LogManager.getLogger(),使用反射獲得調用該方法的類,以這個類的全類名作為loggerName。
其他的根據傳入的參數決定loggerName。
有點需要注意的是,如果他們繼承了一個父類,logger在父類中定義時。LogManager.getLogger(),獲得的是以父類全類名指定的logger。其他的都是loggername都是子類的全類名。
原因可能是在於繼承的一些特性,暫時沒搞明白,等待學習。