MBS13: 日志工厂的简单使用

13.1 简介

​ 在程序的开发过程中,我们往往需要进行大量的程序调试与排错。在初学阶段,我们往往使用的是sout与debug进行程序排错。而控制台的输出信息大多数时候都不够详细,因此日志工厂诞生,我们能够更为方便地查看后台日志,了解程序运行细节。

13.2 开启日志

​ mybatis在核心配置文件中,提供了 settings 标签,语法如下:

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

提示: name是设置名,而value则是候选值。日志工厂设置名是 logImpl ,候选值如下;

候选值 备注
SLF4J 了解
LOG4J 重点
LOG4J2 了解
JDK_LOGGING 了解
COMMONS_LOGGING 了解
STDOUT_LOGGING 掌握
NO_LOGGING 了解

13.3 STDOUT_LOGGING的使用

核心文件配置:

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration
        PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
    <properties resource="db.properties"/>
    <settings>
        <setting name="logImpl" value="STDOUT_LOGGING"/>		<!--此处开启标准日志-->
        <setting name="cacheEnabled" value="true"/>
    </settings>


    <typeAliases>
        <package name="com.yun.pojo"/>
    </typeAliases>

    <environments default="development">
        <environment id="development">
            <transactionManager type="JDBC"/>
            <dataSource type="POOLED">
                <property name="driver" value="${driver}"/>
                <property name="url" value="${url}"/>
                <property name="username" value="${user}"/>
                <property name="password" value="${pwd}"/>
            </dataSource>
        </environment>
    </environments>
    <mappers>
        <mapper resource="com/yun/dao/UserMapper.xml"/>
        <mapper class="com.yun.test.TestMapper"/>
<!--        <package name="com.yun.dao"/>-->
        <mapper class="com.yun.dao.TeacherMapper"/>
    </mappers>
</configuration>

日志输出:

Opening JDBC Connection
Created connection 2012846597.
Setting autocommit to false on JDBC Connection [com.mysql.jdbc.JDBC4Connection@77f99a05]
==>  Preparing: select * from user where id=? 
==> Parameters: 2(Integer)
<==    Columns: id, name, gender, tid
<==        Row: 2, 李四哥, 1, 1
<==      Total: 1
User(id=2, name=李四哥, gender=1, tid=1)
Resetting autocommit to true on JDBC Connection [com.mysql.jdbc.JDBC4Connection@77f99a05]
Closing JDBC Connection [com.mysql.jdbc.JDBC4Connection@77f99a05]
Returned connection 2012846597 to pool.
Cache Hit Ratio [com.yun.dao.UserMapper]: 0.5
User(id=2, name=李四哥, gender=1, tid=1)
false

Process finished with exit code 0

提示: 开启很简单,而使用则是更为明了清晰地查看程序运行详情。

13.4 LOG4J的使用

13.4.1 简介

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

13.4.2 配置

Maven依赖包:

<!-- https://mvnrepository.com/artifact/log4j/log4j -->
<dependency>
    <groupId>log4j</groupId>
    <artifactId>log4j</artifactId>
    <version>1.2.17</version>
</dependency>

配置文件log4j.properties:

#等级为debug的日志信息输出到console、file两处
log4j.rootLogger=DEBUG,console,file

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

#文件输出相关设置        org.apache.log4j
log4j.appender.file = org.apache.log4j.RollingFileAppender
log4j.appender.file.File = ./log/yun.log
log4i.appender.file.MaxFileSize = 10mb
log41.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
1og4j.logger.java.sql.Statement = DEBUG
1og4j.logger.java.sql.ResultSet = DEBUG
1og4j.logger.java.sql.PreparedStatement = DEBUG

优先级: 日志记录器(Logger)的行为是分等级的。如下表所示:

分为OFF、FATAL、ERROR、WARN、INFO、DEBUG、ALL或者您定义的级别。Log4j建议只使用四个级别,优先级从高到低分别是 ERROR、WARN、INFO、DEBUG。通过在这里定义的级别,您可以控制到应用程序中相应级别的日志信息的开关。比如在这里定义了INFO级别,则应用程序中所有DEBUG级别的日志信息将不被打印出来,也是说大于等于的级别的日志才输出。

代码:

import org.apache.log4j.Logger;

public class UserMapperTest {
    static Logger logger= Logger.getLogger(UserMapperTest.class);
    
    @Test
    public void loggerTest(){
        logger.info("你好");
        logger.debug("你好");
    }
}

log4j的使用不

上一篇:Log4j的实现与日志工厂


下一篇:java-log日志