MyBatis进阶一:MyBatis日志管理;(尚有疑问~~~,如何输出日志到文件待补充……)

 

目录

日志简介 

首先,在pom.xml中增加logback的依赖:

然后,上面在pom.xml中引入logback后,运行程序,观察效果:

最后,logback日志自定义格式:

附1:日志级别

附2:logback官网

附3:让日志输出到一个日志文件中,而不是输出到Console控制台中(待解决)


 

日志简介 

日志就是系统运行的历史记录。

MyBatis进阶一:MyBatis日志管理;(尚有疑问~~~,如何输出日志到文件待补充……)_第1张图片

日志是任何一个系统都必不可少的东西,mybatis自然也离不开日志;在系统运行过程中,mybatis在后台默默地产生着各种日志。

MyBatis进阶一:MyBatis日志管理;(尚有疑问~~~,如何输出日志到文件待补充……)_第2张图片

说明:

(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好。   而mybatis底层就是通过SLF4J支持logback的


PS:疑问待解决,在在非mybatis项目中,可以使用logback吗??????经过实测,在非mybatis项目中,使用logback没反应,,,,  然后,在不使用mybatis的项目中,logback如何被使用嘞?

首先,在pom.xml中增加logback的依赖:

MyBatis进阶一:MyBatis日志管理;(尚有疑问~~~,如何输出日志到文件待补充……)_第3张图片

说明:

(1)Maven中央仓库的检索网站:https://search.maven.org/:这以前说过很多次,这儿再啰嗦一下~~

MyBatis进阶一:MyBatis日志管理;(尚有疑问~~~,如何输出日志到文件待补充……)_第4张图片

MyBatis进阶一:MyBatis日志管理;(尚有疑问~~~,如何输出日志到文件待补充……)_第5张图片

MyBatis进阶一:MyBatis日志管理;(尚有疑问~~~,如何输出日志到文件待补充……)_第6张图片


 

然后,上面在pom.xml中引入logback后,运行程序,观察效果:

MyBatis进阶一:MyBatis日志管理;(尚有疑问~~~,如何输出日志到文件待补充……)_第7张图片

说明:

(1)上面日志中的关键就是:

MyBatis进阶一:MyBatis日志管理;(尚有疑问~~~,如何输出日志到文件待补充……)_第8张图片

PS:发现上面的操作十分“简略”,程序员不需要什么操作,mybatis就默默的帮我们做好了一切,,,,程序员只需要引入logback的依赖就OK了~~~ 

emmm,一个疑问:在非mybatis项目中,可以使用logback吗?????? 这些背后是mybatis在支撑吗?


 

最后,logback日志自定义格式:

logback允许对日志进行自定义和设置:

MyBatis进阶一:MyBatis日志管理;(尚有疑问~~~,如何输出日志到文件待补充……)_第9张图片

logback.xml内容:



    
        
            %d{HH:mm:ss:SSS} [%thread] %-5level %logger{36} - %msg%n
        
    
    
        
    

说明:

(1)logback.xml文件并没有dtd或者schema约束文档;

(2)logback.xml内容分析

MyBatis进阶一:MyBatis日志管理;(尚有疑问~~~,如何输出日志到文件待补充……)_第10张图片

MyBatis进阶一:MyBatis日志管理;(尚有疑问~~~,如何输出日志到文件待补充……)_第11张图片

MyBatis进阶一:MyBatis日志管理;(尚有疑问~~~,如何输出日志到文件待补充……)_第12张图片

MyBatis进阶一:MyBatis日志管理;(尚有疑问~~~,如何输出日志到文件待补充……)_第13张图片


 

附1:日志级别

日志输出级别(优先级高到低):按照日志的重要程度对日志进行了分级;

       ● error:错误 - 系统的故障日志;

       ● warn:警告 - 存在风险或使用不当的日志;

       ● info:一般性消息;

       ● debug:程序内部用于调试信息;

       ● trace:程序运行的跟踪信息;

说明:

error:当在日志中发现了error的时候,就知道这条日志是一个系统的故障;;;

warn:代表某一个操作可能存在风险或者使用不当的情况,尽管其不会造成系统的崩溃或者损坏,但是其可能存在潜在的问题。

info:程序中无关紧要的一般性输出,,,,,在实际调试程序的时候,可以设置日志的输出级别为info,然后在程序中我们可以输出一些无关紧要的内容(如System.out.println(“*********”)),通过这些输出信息可以帮助我们对日志进行观察和管理(这些输出信息就像是标记一样,以前在调试程序的时候也这样干过~~~)。

在生产环境中,建议将日志级别设置为info;;;在开发环境中,建议将日志级别设置为debug,方便程序的调试;

debug:程序内部用于调试的信息:

MyBatis进阶一:MyBatis日志管理;(尚有疑问~~~,如何输出日志到文件待补充……)_第14张图片

trace:往往就是针对于某一个变量或者某一段代码进行的临时性的打印。。。在实际中,这个使用的很少;


 

附2:logback官网

logback的官网:http://logback.qos.ch/

MyBatis进阶一:MyBatis日志管理;(尚有疑问~~~,如何输出日志到文件待补充……)_第15张图片


 

附3:让日志输出到一个日志文件中,而不是输出到Console控制台中(待解决)

你可能感兴趣的:(Mybatis)