myBatis无法用log4j输出日志

今天单元测试mybatis,发现其在web项目中竟然无法使用log4j输出日志,而其在纯java工程中可以输出(两个工程使用相同的log4j配置文件)。

后来看官方文档日志一篇发现

 

Logging

 

Mybatis内置的日志工厂提供日志功能,具体的日志实现有以下几种工具:

 

  • SLF4J
  • Apache Commons Logging
  • Log4j 2
  • Log4j
  • JDK logging

 

具体选择哪个日志实现工具由MyBatis的内置日志工厂确定。它会使用最先找到的(按上文列举的顺序查找)。 如果一个都未找到,日志功能就会被禁用。

不 少应用服务器的classpath中已经包含Commons Logging,如Tomcat和WebShpere, 所以MyBatis会把它作为具体的日志实现。记住这点非常重要。这将意味着,在诸如 WebSphere的环境中——WebSphere提供了Commons Logging的私有实现,你的Log4J配置将被忽略。 这种做法不免让人悲催,MyBatis怎么能忽略你的配置呢?事实上,因Commons Logging已经存 在了,按照优先级顺序,Log4J自然就被忽略了!不过,如果你的应用部署在一个包含Commons Logging的环境, 而你又想用其他的日志框架,你可以根据需要调用如下的某一方法:

 

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();

如 果的确需要调用以上的某个方法,请在其他所有MyBatis方法之前调用它。另外,只有在相应日志实现中存在 的前提下,调用对应的方法才是有意义的,否则MyBatis一概忽略。如你环境中并不存在Log4J,你却调用了 相应的方法,MyBatis就会忽略这一调用,代之默认的查找顺序查找日志实现。

 

但是这种方法使用也是很麻烦 ,苦于无法解决。逛逛论坛,发现这位仁兄的文章

 

Mybatis 的Log4j日志输出问题 - 以及有关日志的所有问题

才发现原来前面一章xml配置中可以配置选择哪种日志输出。

 

  	<settings>
  		<setting name="logImpl" value="LOG4J"/>
  	</settings>

 具体配置参考官方文档.

 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
MyBatis是一个开源的持久层框架,它可以帮助开发者简化数据库操作的编写。而Log4j是一个Java日志框架,可以用于记录应用程序的日志信息。在MyBatis中使用Log4j可以方便地记录SQL语句的执行情况以及其他相关信息。 要在MyBatis中使用Log4j,首先需要在项目中引入Log4j的相关依赖。可以通过在项目的pom.xml文件中添加以下依赖来引入Log4j: ```xml <dependency> <groupId>log4j</groupId> <artifactId>log4j</artifactId> <version>1.2.17</version> </dependency> ``` 引入依赖后,需要在项目的配置文件中配置Log4j的相关信息。可以创建一个名为log4j.properties的文件,并在其中配置日志输出的格式、级别等信息。以下是一个简单的log4j.properties配置示例: ```properties # 设置日志输出级别为DEBUG log4j.rootLogger=DEBUG, stdout # 配置输出到控制台 log4j.appender.stdout=org.apache.log4j.ConsoleAppender log4j.appender.stdout.layout=org.apache.log4j.PatternLayout log4j.appender.stdout.layout.ConversionPattern=%d [%t] %-5p %c - %m%n ``` 配置完成后,可以在MyBatis的配置文件中指定使用Log4j作为日志输出工具。在mybatis-config.xml文件中添加以下配置: ```xml <configuration> <!-- 其他配置 --> <!-- 配置使用Log4j作为日志输出工具 --> <settings> <setting name="logImpl" value="LOG4J"/> </settings> <!-- 其他配置</configuration> ``` 配置完成后,MyBatis会将SQL语句的执行情况以及其他相关信息输出Log4j日志文件中。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值