MyBatis进阶一:slf4j日志门面和logback日志组件;(在MyBatis中的使用logback)(本篇博客仅仅是在控制台输出日志信息,不涉及把日志信息存储到日志文件)

本篇博客介绍一个,目前在mybatis,spring等框架中,广泛使用的日志组件:logback;

目录

日志简介 

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

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

然后,可以在logback.xml中自定义日志的格式:

最后的一点说明:

附1:日志级别

附2: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的依赖:

说明:

(1)Maven中央仓库的检索网站:Maven Central Repository Search:这以前说过很多次,这儿再啰嗦一下~~


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

说明:

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

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


然后,可以在logback.xml中自定义日志的格式:

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

logback.xml内容:

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <appender name="consolehaha" class="ch.qos.logback.core.ConsoleAppender">
        <encoder>
            <pattern>%d{HH:mm:ss:SSS} [%thread] %-5level %logger{36} - %msg%n</pattern>
        </encoder>
    </appender>
    <root level="debug">
        <appender-ref ref="consolehaha"></appender-ref>
    </root>
</configuration>

说明:

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

(2)logback.xml内容分析


最后的一点说明:

即,目前可以这样认为,在不使用mybatis的普通java项目中也是可以使用logback的,只是需要我们手动编写程序才能输出日志;

但是在mybatis项目中使用logback,mybatis帮我们做了封装和处理,我们不需要手动编写程序,其就能输出日志。


附1:日志级别

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

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

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

       ● info:一般性消息;

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

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

说明:

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

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

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

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

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

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


附2:logback官网

logback的官网:Logback Home


附3:让日志输出到一个日志文件中,而不是输出到Console控制台中;

把日志输出到一个日志文件中,可以参考【Spring MVC拦截器3:拦截器案例:开发【获取“用户流量信息”的拦截器】;(logback日志组件:把日志信息存储到日志文件中;)】;

  • 11
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值