本篇博客介绍一个,目前在mybatis,spring等框架中,广泛使用的日志组件:logback;
目录
然后,上面在pom.xml中引入logback后,运行程序,观察效果:
附3:让日志输出到一个日志文件中,而不是输出到Console控制台中(待解决)
日志简介
日志就是系统运行的历史记录。
日志是任何一个系统都必不可少的东西,mybatis自然也离不开日志;在系统运行过程中,mybatis在后台默默地产生着各种日志。
说明:
(1)日志门面:是日志实现的抽象层。为java提供了统一的日志调用接口;【SLF4J】和【Apache Commons-Logging】是两个不同的厂商,有的项目使用【SLF4J】作为日志门面,有的项目使用【Apache Commons-Logging】作为日志门面。。。所以,当接触一个新项目的时候,需要先确认项目使用的日志门面是哪个?因为,这两个日志门面所提供的接口是完全不同的。
(2)日志实现:具体的日志功能的实现。java中有各种各种各样的组织开发了不同的产品,对于日志也是如此。【Apache开发的log4j】,【logback】,【java自带的java.util.logging(jul)】等,这些都是java中常用的日志组件,其提供了日志的打印、输出和管理。。。。。
(3)正是因为,日志基于门面和实现进行了分开,所以给程序的迁移提供了极大的便利。如,已有的一个java项目底层使用SLF4J作为日志门面,然后使用了log4j作为日志实现,,,,但是,随着技术的不断演进,后来发现logback从性能到设计上都比log4j要好,目前要做的就是把log4j的jar包从系统中剔除,假如logback的jar包就可以了,,,,,,作为程序的访问的门面不用做任何的调整,SLF4J自动的会完成从log4j到logback的迁移工作。(但是,我记得以前做项目的时候,很多java来中import了log4j,,,这些深入程序代码中的log4j的东西如何替换??????)
(4)因为日志实现,可能会有一些代码的优化和改动,避免影响用户在项目中的使用,使用日志门面这些统一的接口,假设在实现层代码做了更改,用户在项目中使用日志而调用的接口等等都是不会受影响的。在实际使用中,是选择一个抽象层的日志门面搭配一个底层日志实现来使用的。
(5)工作中,目前多使用logback;log4j是早期java项目中常使用的日志组件;(其实log4j和logback是同一个人开发的,log4j的作者因为一些合作上的原因和log4j本身陈旧的原因,他就另起炉灶开发了logback。。。log4j和logback底层的设计理念非常形式;;;从使用的角度,也是非常像的。)logback的维护性和执行效率都比log4j好。 logback应用十分广泛,mybatis底层就是通过SLF4J支持logback的。
首先,在pom.xml中增加logback的依赖:
</