MyBatis可选择的日志框架有SLF4J,ApacheCommonsLogging,Log4J和JDKlogging。本文将改造前面的例子,网站空间,用以演示Log4J的简单用法(源码下载地址:。此源码对应于以下内容的第五种情况)。
首先应把相关的Log4Jjar包复制到工程的lib目录下,本示例使用的是log4j-1.2.16.jar。
然后应创建log4j.properties文件,用以指定Log4J的行为,并放置到classpath中。在本示例中是将此文件放置在工程的src目录下,工程编译前会将此文件复制到classes目录中(详见工程的生成文件build.xml中的copy-resourcestarget,从23行开始。点此处下载示例源码),而classes目录会被ant加载到classpath中(详见build.xml的37-39行,关于Log4J的日志级别请参见:?uid-225738-action-viewspace-itemid-212359;配置请参见:):
执行的主程序如下:
由此可看出,程序的核心是调用TeacherMapper的getById方法。
1、若log4j.properties内容如下:
运行结果如下:
可看出,已按DEBUG级别打印出了com.abc.mapper包下的日志。
2、若把com.abc.mapper包的日志级别调整为INFO,即:
log4j.logger.com.abc.mapper=INFO
则执行结果如下:
INFO级别高于DEBUG级别,改为INFO则应该不再打印DEBUG级别的日志,但实际情况是DEBUG日志仍然和上例一样被打印了出来。可见,作为rootLogger的子logger,即使log4j.logger.com.abc.mapper定义的日志级别高于rootLogger,也无法生效。
3、现在把com.abc.mapper的日志级别修改为TRACE(级别低于DEBUG),即:
log4j.logger.com.abc.mapper=TRACE
运行结果如下:
由上图可见,TRACE级别的日志已被打印出来,TRACE设置已生效。
4、若log4j.logger.com.abc.mapper的日志级别仍为TRACE,作为其子logger,log4j.logger.com.abc.mapper.TeacherMapper的级别设置为DEBUG(高于TRACE),香港空间,即:
log4j.logger.com.abc.mapper.TeacherMapper=DEBUG
则运行结果如下:
可以看出,TRACE级别的日志已不再打印,作为子logger的log4j.logger.com.abc.mapper.TeacherMapper的日志级别DEBUG虽然高于log4j.logger.com.abc.mapper的日志级别,但也生效了。
5、若log4j.logger.com.abc.mapper的日志级别为DEBUG,作为其子logger,log4j.logger.com.abc.mapper.TeacherMapper的级别设置为TRACE(低于DEBUG),免备案空间,即:
log4j.logger.com.abc.mapper=DEBUG
log4j.logger.com.abc.mapper.TeacherMapper=TRACE
则运行结果如下:
可以看出,正如我们所猜想的,作为子logger的log4j.logger.com.abc.mapper.TeacherMapper,其TRACE级别的设置生效了。
结论:logger的级别若高于rootLogger的级别,则不生效,按rootLogger的级别算;在此前提下,各logger的级别按自己的设置生效。
【MyBatis学习笔记】系列之预备篇一:ant的下载与安装
【MyBatis学习笔记】系列之预备篇二:ant入门示例
【MyBatis学习笔记】系列之一:MyBatis入门示例
【MyBatis学习笔记】系列之二:MyBatis增删改示例
【MyBatis学习笔记】系列之三:MyBatis的association示例
【MyBatis学习笔记】系列之四:MyBatisassociation的两种形式
【MyBatis学习笔记】系列之五:MyBatis与Spring集成示例
【MyBatis学习笔记】系列之六:MyBatis与Spring集成示例续
【MyBatis学习笔记】系列之七:MyBatis一对多双向关联
【MyBatis学习笔记】系列之八:MyBatisMapperScannerConfigurer配置
【MyBatis学习笔记】系列之九:MyBatiscollection的两种形式
【MyBatis学习笔记】系列之十:MyBatis日志之Log4j示例
【MyBatis学习笔记】系列之十一:MyBatis多参数传递之注解方式示例
【MyBatis学习笔记】系列之十二:MyBatis多参数传递之默认命名方式示例
【MyBatis学习笔记】系列之十三:MyBatis多参数传递之Map方式示例
【MyBatis学习笔记】系列之十四:MyBatis中的N+1问题
【MyBatis学习笔记】系列之十五:MyBatis多参数传递之混合方式
【MyBatis学习笔记】系列之十六:Spring声明式事务管理示例
【MyBatis学习笔记】系列之十七:MyBatis多对多保存示例
本文出自 “肖凡的专栏” 博客,请务必保留此出处
如果可以,我真想和你一直旅行。