MyBatis3-Mybatis配置文件详解-日志SFL4j、logback相关使用

382 阅读2分钟

使用注解来映射简单语句会使代码显得更加简洁,但对于稍微复杂一点的语句,Java 注解不仅力不从心,还会让本就复杂的 SQL 语句更加混乱不堪。 因此,如果你需要做一些很复杂的操作,最好用 XML 来映射语句。

mybatis全局配置文件 和 管理SQL的mapper文件


日志相关发展

JDK1.4之前 没有任何日志框架 System.out.println(""); try catch
调试信息等都部署到线上了

信息只能输出到控制台 控制台信息量有限

跟踪的变量 调试的信息

1、设置日志级别 error级别 按照包或类输出 2、将日志输出到文件中 能不能按照日期或文件大小进行归档 记录日志的同时发送邮件给开发人员 3、加入了自定义的格式 让日志更美观 4、异步 性能

将日志开源 引起很大的反响 log4j (Apache 收入旗下)

JDK发现后 开发了JUL java.util.logging Jboos-logging ....

开发 slf4j 日志门面 集成其他框架 不实现日志功能 达到日志大统一 让所有的日志统一成一个出口

JDK开发了 JCL java common logging

基于log4j 开发了 logback (性能提高10倍)

apache log4j 开发出来一个log4j2


SLF4J 门面

log4j2 、 logback 日志实现(Springboot 默认 logback) 出自一个作者

门面层选取 SLF4J 日志实现使用 Logback

logback 中文文档 logbackcn.gitbook.io/logback/02-…

怎么在mybatis中使用logback

image.png

对应maven

 <!--        日志实现   -->
    <!-- https://mvnrepository.com/artifact/ch.qos.logback/logback-classic -->
    <dependency>
        <groupId>ch.qos.logback</groupId>
        <artifactId>logback-classic</artifactId>
        <version>1.4.5</version>
        <scope>test</scope>
    </dependency>
    <!--        门面      -->
    <!-- https://mvnrepository.com/artifact/org.slf4j/slf4j-api -->
    <dependency>
        <groupId>org.slf4j</groupId>
        <artifactId>slf4j-api</artifactId>
        <version>2.0.6</version>
    </dependency>

</dependencies>

上面的版本需要JDK19 故采用降版本防止报错

<!--        &lt;!&ndash; https://mvnrepository.com/artifact/ch.qos.logback/logback-classic &ndash;&gt;-->
        <dependency>
            <groupId>ch.qos.logback</groupId>
            <artifactId>logback-classic</artifactId>
            <version>1.2.11</version>
            <scope>test</scope>
        </dependency>

<!--        &lt;!&ndash; https://mvnrepository.com/artifact/org.slf4j/slf4j-api &ndash;&gt;-->
        <dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-api</artifactId>
            <version>1.7.36</version>
        </dependency>

    </dependencies>

Mybatis 底层继承了日志功能 当加入对应的java包会自动介入调试 加入依赖后 调试信息 slf4j自动介入的

image.png

image.png

image.png

默认是Debug级别

import org.slf4j.Logger;//*
import org.slf4j.LoggerFactory;//*
//import org.slf4j.Logger;

import java.io.IOException;
import java.io.InputStream;

public class MyTest {

    Logger LOGGER = LoggerFactory.getLogger(this.getClass());
@Test
public void  test02(){
    LOGGER.trace("跟踪级别trace");

    LOGGER.debug("跟踪级别debug");

    LOGGER.info("跟踪级别info");

    LOGGER.warn("跟踪级别warn");
    LOGGER.error("跟踪级别error");

}

MyBatis使用日志

1、加入依赖

<!--        &lt;!&ndash; https://mvnrepository.com/artifact/ch.qos.logback/logback-classic &ndash;&gt;-->
        <dependency>
            <groupId>ch.qos.logback</groupId>
            <artifactId>logback-classic</artifactId>
            <version>1.2.11</version>
            <scope>test</scope>
        </dependency>

<!--        &lt;!&ndash; https://mvnrepository.com/artifact/org.slf4j/slf4j-api &ndash;&gt;-->
        <dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-api</artifactId>
            <version>1.7.36</version>
        </dependency>

    </dependencies>

2、**创建配置文件 logback.xml (可忽略) **

<configuration>

<!--追加器   日志以那种方式进行传输   name  取个名字   class  不同的实现类  会输出到不同的地方-->
    <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
        <encoder>
<!--            格式 -->
            <pattern>%d{HH:mm:ss.SSS}   [%thread] %-5level %logger{136} - %msg%n</pattern>
        </encoder>
    </appender>


<!--根据包或类  控制更细腻的日志级别-->
    <logger name="com.kdy.mapper.EmpMapper" level="trace">  </logger>
<!--    控制所有的-->
    <root level="error">
<!--        引用  将当前日志级别输出到那个追加器上面  -->
        <appender-ref ref="STDOUT" />
    </root>
</configuration>

image.png

3、使用


import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
Logger LOGGER = LoggerFactory.getLogger(this.getClass());
LOGGER.trace("跟踪级别trace");

LOGGER.debug("跟踪级别debug");

LOGGER.info("跟踪级别info");

LOGGER.warn("跟踪级别warn");
LOGGER.error("跟踪级别error");