mybatis_user_guide(8) 日志
【0】README
1)本文全文總結于?http://www.mybatis.org/mybatis-3/zh/logging.html
2)Mybatis內置的日志工廠提供日志功能,具體的日志實現有以下幾種工具:
- SLF4J
- Apache Commons Logging
- Log4j 2
- Log4j
- JDK logging
3)具體選擇哪個日志實現工具由MyBatis的內置日志工廠確定。它會使用最先找到的(按上文列舉的順序查找)。 如果一個都未找到,日志功能就會被禁用。(干貨——?如果一個都未找到,日志功能就會被禁用)
【1】Logging
1)problem+solutions:1.1)problem:不少應用服務器的classpath中已經包含Commons Logging,如Tomcat和WebShpere, 所以MyBatis會把它作為具體的日志實現。記住這點非常重要。這將意味著,在諸如 WebSphere的環境中——WebSphere提供了Commons Logging的私有實現,你的Log4J配置將被忽略。(因Commons Logging已經存 在了,按照優先級順序,Log4J自然就被忽略了)
1.2)solutions:如果你的應用部署在一個包含Commons Logging的環境, 而你又想用其他的日志框架,你可以通過在MyBatis的配置文件mybatis-config.xml里面添加一項setting(配置)來選擇一個不同的日志實現。
<configuration><settings>...<setting name="logImpl" value="LOG4J"/>...</settings> </configuration><span style="color: rgb(0, 0, 0); font-size: 18px; font-family: Monaco, Menlo, Consolas, 'Courier New', monospace; line-height: 24px; background-color: inherit;"> </span> 對以上代碼的分析(Analysis):
A1)?logImpl可選的值有:SLF4J、LOG4J、LOG4J2、JDK_LOGGING、COMMONS_LOGGING、STDOUT_LOGGING、NO_LOGGING 或者是實現了接口org.apache.ibatis.logging.Log的類的完全限定類名, 并且這個類的構造函數需要是以一個字符串(String類型)為參數的。
A2)你根據需要調用如下的某一方法:
org.apache.ibatis.logging.LogFactory.useSlf4jLogging(); org.apache.ibatis.logging.LogFactory.useLog4JLogging(); org.apache.ibatis.logging.LogFactory.useJdkLogging(); org.apache.ibatis.logging.LogFactory.useCommonsLogging(); org.apache.ibatis.logging.LogFactory.useStdOutLogging();
Attention)?如果的確需要調用以上的某個方法,請在其他所有MyBatis方法之前調用它。另外,只有在相應日志實現中存在 的前提下,調用對應的方法才是有意義的,否則MyBatis一概忽略。如你環境中并不存在Log4J,你卻調用了 相應的方法,MyBatis就會忽略這一調用,代之默認的查找順序查找日志實現。
【2.1】對語句級別記錄日志 log4j.logger.org.mybatis.example.BlogMapper.selectBlog=TRACE 【2.2】對包級別記錄日志 log4j.logger.org.mybatis.example=TRACE 【3】問題 1)problem+solutions: 1.1)problem:某些查詢可能會返回大量的數據,只想記錄其執行的SQL語句該怎么辦? 1.2)solutions:為此,Mybatis中SQL語 句的日志級別被設為DEBUG(JDK Logging中為FINE),結果日志的級別為TRACE(JDK Logging中為FINER)。所以,只要將日志級別調整為DEBUG即可達到目的: log4j.logger.org.mybatis.example=DEBUG
2)problem+solutions: 2.1)problem:要記錄日志的是類似下面的mapper文件而不是mapper接口又該怎么呢? <?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE mapperPUBLIC "-//mybatis.org//DTD Mapper 3.0//EN""http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <mapper namespace="org.mybatis.example.BlogMapper"><select id="selectBlog" resultType="Blog">select * from Blog where id = #{id}</select> </mapper> 2.2)solutions:對這個文件記錄日志,只要對命名空間增加日志記錄功能即可: log4j.logger.org.mybatis.example.BlogMapper=TRACE 2.3)solutions:?進一步,要記錄具體語句的日志可以這樣做: log4j.logger.org.mybatis.example.BlogMapper.selectBlog=TRACE Conclusion)?看到了吧,兩種配置沒差別!?配置文件log4j.properties的余下內容是針對日志格式的,這一內容已經超出本 文檔范圍。關于Log4J的更多內容,可以參考Log4J的網站。
總結
以上是生活随笔為你收集整理的mybatis_user_guide(8) 日志的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 早起的鸟儿有虫吃是什么意思 早起的鸟儿有
- 下一篇: 幽灵战士3如何增加弹夹