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的使用不