MyBatis3.2.7 log4j日志

zzk6205 发布于 2014/09/04 14:07
阅读 3K+
收藏 1

使用log4j输出MyBatis所执行的sql日志时出现如下问题:

打算将sql日志单独分出一个文件来存储,但无论怎么配置,sql始终是输出到root文件中, 

MyBatis的configuration配置文件中已经指定了使用log4j 

  1. <configuration>  
  2.     <settings>  
  3.         <setting name="logImpl" value="LOG4J" />  
  4.     </settings>  
  5. </configuration>  
log4j配置如下  
  1. LOG_DIR=D:/logs/base  
  2. #  
  3. # Set root category priority to WARN and its only appender to FILE.  
  4. #  
  5. log4j.rootCategory=DEBUG,ROOT  
  6.   
  7. log4j.category.org.mybatis=DEBUG,MYBATIS  
  8. log4j.additivity.org.mybatis=false  
  9.   
  10. log4j.category.org.apache.ibatis=DEBUG,MYBATIS  
  11. log4j.additivity.org.apache.ibatis=false  
  12.   
  13. log4j.logger.org.apache=DEBUG  
  14. log4j.logger.java.sql.ResultSet=DEBUG  
  15. log4j.logger.java.sql.Connection=DEBUG  
  16. log4j.logger.java.sql.Statement=DEBUG  
  17. log4j.logger.java.sql.PreparedStatement=DEBUG  
  18.   
  19. #  
  20.   
  21. log4j.appender.ROOT=org.apache.log4j.RollingFileAppender  
  22. log4j.appender.ROOT.File=${LOG_DIR}/root.log  
  23. log4j.appender.ROOT.MaxFileSize=5000000  
  24. log4j.appender.ROOT.layout=org.apache.log4j.PatternLayout  
  25. log4j.appender.ROOT.layout.ConversionPattern=[%d{ISO8601}] %-5p %-x %X{user} %n     %m%n  
  26.   
  27. log4j.appender.MYBATIS=org.apache.log4j.RollingFileAppender  
  28. log4j.appender.MYBATIS.File=${LOG_DIR}/mybatis.log  
  29. log4j.appender.MYBATIS.MaxFileSize=5000000  
  30. log4j.appender.MYBATIS.layout=org.apache.log4j.PatternLayout  
  31. log4j.appender.MYBATIS.layout.ConversionPattern=[%d{ISO8601}] %-5p %-x %X{user} %n     %m%n  

按照此log4j的配置,sql日志应该输出至mybatis.log文件中,但是实际效果确是输出到了root.log里面
加载中
0
zzk6205
zzk6205
找到原因了,和使用logback还是log4j没有任何关系。

Mybatis3.2.x 后sql日志的输出不能采用
<logger name="java.sql.Connection">
    <level value="debug"/>
    <appender-ref ref="stdout"/>
</logger>
<logger name="java.sql.Statement">
    <level value="debug"/>
    <appender-ref ref="stdout"/>
</logger>
<logger name="java.sql.PreparedStatement">
    <level value="debug"/>
    <appender-ref ref="stdout"/>
</logger>

sql的输出路径和mapper的配置文件中的命名空间有关,因此建议命名空间也和类的package是一致的

0
hlevel
hlevel

你的配置没错log4j  级别没办法限制日志级别为 DEBUG < INFO < WARN < ERROR < FATAL  ,你为debug 那么sql 只能在debug 输出语句,而debug一下级别全部都输出到一个文件里去了,这就等于没配置.你配两个效果也一样,要么把第二个配置为info 级别,这样sql语句基本就不会输出. 

建议升级到logback ,这是替代log4j的,也是同一个作者,实现你所说只输出sql 到一个文件,另一文件输出sql ,轻轻松松配置。

hlevel
hlevel
回复 @zzk6205 : http://www.cppblog.com/fwxjj/archive/2012/08/16/187345.html 给个教程你看看.
zzk6205
zzk6205
升级了LogBack依然不行,配置中制定了sql日志需要输出至mybatis.log中,但是缺输出至了root.log里面
Will_awokE
Will_awokE
支持,升级到logback吧
0
朱宇厅
朱宇厅
你好,我现在也遇到你这样问题,我使用log4j的异步日志需要将mybatis的sql日志打印出来,我的配置是<logger name="java.sql.Connection">
    <level value="debug"/>
    <appender-ref ref="stdout"/>
</logger>
<logger name="java.sql.Statement">
    <level value="debug"/>
    <appender-ref ref="stdout"/>
</logger>
<logger name="java.sql.PreparedStatement">
    <level value="debug"/>
    <appender-ref ref="stdout"/>

</logger>

你上面写得,我的就打印sql日志,求交流

返回顶部
顶部