Mybatis日志

日志工厂

如果一个数据库操作出现了异常, 我们需要排错, 日志就是最好的帮手

以前: sout println

现在: 日志工厂 !

  • SLF4J
  • LOG4J
  • LOG4J2
  • JDK_LOGGING
  • COMMONS_LOGGING
  • STDOUT_LOGGING
  • NO_LOGGING

在Mybatis中具体使用哪一个日志实现, 在设置中设定

STDOUT_LOGGING

这是一个标准的日志工厂实现, 可以直接用.

  1. 在核心配置文件中添加settings标签

    1
    2
    3
    <settings>
    <setting name="logImpl" value="STDOUT_LOGGING"/>
    </settings>
  2. 输出为:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Opening JDBC Connection
    Created connection 1073763441.
    Setting autocommit to false on JDBC Connection [com.mysql.jdbc.JDBC4Connection@40005471]
    ==> Preparing: select * from mybatis.user where id = ?;
    ==> Parameters: 2(Integer)
    <== Columns: id, name, pwd
    <== Row: 2, John, 123456
    <== Total: 1
    User{id=2, name='John', password='123456'}
    Resetting autocommit to true on JDBC Connection [com.mysql.jdbc.JDBC4Connection@40005471]
    Closing JDBC Connection [com.mysql.jdbc.JDBC4Connection@40005471]
    Returned connection 1073763441 to pool.

LOG4J

Log4j是Apache的一个开源项目,通过使用Log4j,我们可以控制日志信息输送的目的地是控制台、文件、GUI组件,甚至是套接口服务器、NT的事件记录器、UNIX Syslog守护进程等;我们也可以控制每一条日志的输出格式;通过定义每一条日志信息的级别,我们能够更加细致地控制日志的生成过程。最令人感兴趣的就是,这些可以通过一个配置文件来灵活地进行配置,而不需要修改应用的代码。

  1. 导入log4j的包

    1
    2
    3
    4
    5
    6
    <!-- https://mvnrepository.com/artifact/log4j/log4j -->
    <dependency>
    <groupId>log4j</groupId>
    <artifactId>log4j</artifactId>
    <version>1.2.17</version>
    </dependency>
  2. 新建properties配置文件

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    #将等级为DEBUG的日志信息输出到console和file这两个目的地,console和file的定义在下面的代码
    log4j.rootLogger=DEBUG,console,file

    #控制台输出的相关设置
    log4j.appender.console = org.apache.log4j.ConsoleAppender
    log4j.appender.console.Target = System.out
    log4j.appender.console.Threshold=DEBUG
    log4j.appender.console.layout = org.apache.log4j.PatternLayout
    log4j.appender.console.layout.ConversionPattern=[%c]-%m%n

    #文件输出的相关设置
    log4j.appender.file = org.apache.log4j.RollingFileAppender
    log4j.appender.file.File=./log/xlb.log
    log4j.appender.file.MaxFileSize=10mb
    log4j.appender.file.Threshold=DEBUG
    log4j.appender.file.layout=org.apache.log4j.PatternLayout
    log4j.appender.file.layout.ConversionPattern=[%p][%d{yy-MM-dd}][%c]%m%n

    #日志输出级别
    log4j.logger.org.mybatis=DEBUG
    log4j.logger.java.sql=DEBUG
    log4j.logger.java.sql.Statement=DEBUG
    log4j.logger.java.sql.ResultSet=DEBUG
    log4j.logger.java.sql.PreparedStatement=DEBUG
  3. 在核心配置文件中修改相关语句:

    1
    2
    3
    <settings>
    <setting name="logImpl" value="LOG4J"/>
    </settings>
  4. 直接运行刚才的测试文件:

简单使用

  1. 在要使用log4j的包, 应该选择阿帕奇的包, 而不是JDK自带的

    1
    import org.apache.log4j.Logger;
  2. 日志对象, 加载参数为当前类的class

    1
    static Logger logger = Logger.getLogger(UserMapperTest.class);
  3. 日志级别:

    1
    2
    3
    4
    5
    6
    @Test
    public void log4jTest(){
    logger.info("info: 进入了log4jTest");
    logger.debug("debug: 进入了log4jTest");
    logger.error("error: 进入了log4j");
    }
  4. 输出为:

    1
    2
    3
    [INFO][20-07-20][com.lxb.dao.UserMapperTest]info: 进入了log4jTest
    [DEBUG][20-07-20][com.lxb.dao.UserMapperTest]debug: 进入了log4jTest
    [ERROR][20-07-20][com.lxb.dao.UserMapperTest]error: 进入了log4j
-------------本文结束感谢您的阅读-------------
可以请我喝杯奶茶吗