第三方集成日志组件的使用

JUnit单元测试

概述

实际开发中,单元测试⼀般是由我们Java程序员来完成。我们要对我们⾃⼰写的每⼀个业务⽅法负责任,要保证每个业务⽅法在进⾏测试的时候都能通过

  • 期望值 ( 执行了这个业务方法之后,你期望的执行结果是多少 )
  • 实际值( 被测试的业务方法的真正执行结果 )
  • 期望值和实际值相同表示测试通过,期望值和实际值不同则单元测试执⾏时会报错
  • JUnit是一个专⻔做单元测试的组件 , 不仅仅是为了代替main⽅法 , 单元测试方法可以写多个(一般是一个业务方法对应一个测试方法)

测试类的类名以及每个测试方法的方法名定义规范

  • 测试方法的规范: public void testXxxx(){} , 测试方法的方法名以 test 开始
  • 测试类的类名规范:public class XxxTest{ } , 测试类的类名以Test 结尾

测试业务类的时候可以在测试类上测试,也可以在测试方法上测试

  • 在测试类上执⾏@Test注解,该测试类中所有的测试⽅法都会执⾏
  • 在测试⽅法上执⾏@Test注解,只执⾏当前的测试⽅法 , 测试方法可以写多个(一般是一个业务方法对应一个测试方法)

使用步骤

第⼀步:引⼊依赖


<dependency>
	<groupId>junitgroupId>
 	<artifactId>junitartifactId>
 	<version>4.13.2version>
 	<scope>testscope>
dependency>

第⼆步:编写单元测试类【测试⽤例】,测试⽤例中每⼀个测试⽅法上使⽤@Test注解进⾏标注

测试业务类

//数学业务类
public class MathService {
    //求和的业务方法
    public int sum(int a, int b){
        return a * 10 + b * 10;
    }
    //相减的业务方法
    public int sub(int a, int b){
        return a - b;
    }
}

测试用例

// 测试⽤例名字规范:你要测试的类名+Test
public class MathServiceTest { 
    // @Test注解非常重要,被这个注解标注的方法就是一个单元测试方法
    @Test
    public void testSum(){
        MathService mathService = new MathService();
        // 获取实际值
        int actual = mathService.sum(1, 2);
        // 期望值
        int expected = 30;
        // 加断言进行测试
        Assert.assertEquals(expected, actual);
    }

    @Test
    public void testSub(){
        MathService mathService = new MathService();
        // 实际值
        int actual = mathService.sub(10, 5);
        // 期望值
        int expected = 5;
        // 添加断言机制
        Assert.assertEquals(expected, actual);
    }
}

关于MyBatis集成日志组件

引⼊⽇志框架的⽬的是为了看清楚MyBatis执⾏的具体SQL

常见的集成的日志组件

SLF4J(沙拉风):沙拉风是一个日志标准

  • 其中有一个框架叫做 logback实现了 slf4j 标准 , 实现了沙拉风规范

LOG4J , LOG4J2 , STDOUT_LOGGING …

  • 注意:log4j , log4j2, logback都是同一个作者开发的

启用STDOUT_LOGGING标准日志

启⽤MyBatis实现的标准⽇志组件,只需要在mybatis-config.xml核心配置⽂件中添加settings配置可参考mybatis中文手册

  • 该日志组件可以看到连接对象什么时候创建和关闭以及具体的sql语句信息, 但没有详细的日期,线程名字等,此时需要集成第三方的log组件丰富信息

DOCTYPE configuration
        PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-config.dtd">

<settings>
    <setting name="logImpl" value="STDOUT_LOGGING"/>
settings>

集成第三方logback日志框架的步骤

第一步:引入logback的依赖

<dependency>
    <groupId>ch.qos.logbackgroupId>
    <artifactId>logback-classicartifactId>
    <version>1.2.11version>
dependency>

第二步:引入 logback 所必须的 xml 配置文件logback.xml 或者 logback-test.xml

  • 配置文件主要配置日志输出相关的级别以及日志具体的格式 , 配置文件的名字固定且必须放到类的根路径下
  • root 标签的 level 属性指定日志级别,从低到高的优先级:ALL < TRACE < DEBUG < INFO < WARN < ERROR < FATAL < OFF (级别越低输出的信息越多 , 级别越高输出的信息越少 , 级别低的输出信息一定包含级别高的输出信息)

<configuration debug="false">
 
 
 <property name="LOG_HOME" value="/home"/>
    
 
 <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
 	<encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
 		
 		<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%npattern>
 	encoder>
 appender>
    
 
 <appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
 	<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
 		
 		<FileNamePattern>${LOG_HOME}/TestWeb.log.%d{yyyy-MM-dd}.logFileNamePattern>
 		
 		<MaxHistory>30MaxHistory>
	 rollingPolicy>
     
 	<encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
 		
 		<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%npattern>
 	encoder>
     
 	
 	<triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
 		<MaxFileSize>100MBMaxFileSize>
 	triggeringPolicy>
 appender>
    
 
 <logger name="com.apache.ibatis" level="TRACE"/>
 <logger name="java.sql.Connection" level="DEBUG"/>
 <logger name="java.sql.Statement" level="DEBUG"/>
 <logger name="java.sql.PreparedStatement" level="DEBUG"/>
    
 
 <root level="DEBUG">
 	<appender-ref ref="STDOUT"/>
 	<appender-ref ref="FILE"/>
 root>
configuration>

Spring6 启用 Log4j2 日志框架

从Spring5之后,Spring框架支持集成的日志框架是Log4j2

启用日志框架步骤

第一步:引入Log4j2的依赖


<dependency>
  <groupId>org.apache.logging.log4jgroupId>
  <artifactId>log4j-coreartifactId>
  <version>2.19.0version>
dependency>

<dependency>
  <groupId>org.apache.logging.log4jgroupId>
  <artifactId>log4j-slf4j2-implartifactId>
  <version>2.19.0version>
dependency>

第二步:引入Log4j2所必须的 xml 配置文件log4j2.xml

  • 配置文件主要配置日志输出相关的级别以及日志具体的格式 , 配置文件的名字固定且必须放到类的根路径下
  • root 标签的 level 属性指定日志级别,从低到高的优先级:ALL < TRACE < DEBUG < INFO < WARN < ERROR < FATAL < OFF (级别越低输出的信息越多 , 级别越高输出的信息越少)

<configuration>
    <loggers>
        
        <root level="DEBUG">
            <appender-ref ref="spring6log"/>
        root>
    loggers>

    <appenders>
        
        <console name="spring6log" target="SYSTEM_OUT">
            
            <PatternLayout pattern="%d{yyyy-MM-dd HH:mm:ss SSS} [%t] %-3level %logger{1024} - %msg%n"/>
        console>
    appenders>
configuration>

自己使用日志框架记录日志信息

// 第一步:获取FirstSpringTest类的日志记录器对象,也就是说只要是FirstSpringTest类中的代码执行记录日志的话,就输出相关的日志信息
Logger logger = LoggerFactory.getLogger(FirstSpringTest.class);

// 第二步:记录日志,根据不同的级别来输出日志,级别低的包含级别高的
logger.info("我是一条消息");
logger.debug("我是一条调试信息");
logger.error("我是一条错误信息");

你可能感兴趣的:(MyBatis,mybatis,logback,java)