Mybatis的日志工厂
尤其是在数据库代码(SQL语句)编写错误时,经常不容易发现错误,一个好的办法就是将sql语句在执行时也能打印出来,以便及时发现错误,以往经常使用的方法是:
-
使用System.out.println();将需要的信息输出到控制台;
-
debug
推荐实现mybatis的日志工厂!在执行代码时,能够输出完整的执行过程,便于排错。
设置方式
在xml配置文件中添加设置标签,名称为“logImpl”,value值有许多种,这里介绍LOG4J 和 STDOUT_LOGGING,其中 STDOUT_LOGGING是标准输出日志。
所有的value值:
-
SLF4J
-
LOG4J (√)
-
LOG4J2
-
JDK_LOGGING
-
COMMONS_LOGGING
-
STDOUT_LOGGING(√)
-
NO_LOGGING
STDOUT_LOGGING的使用方式
配置源代码:
<settings> <setting name="logImpl" value="STDOUT_LOGGING"/> <!--标准输出日志--> </settings>
测试即可!
LOG4J
LOG4J的好处:
-
可以控制日志信息输送的目的地是控制台、文件、GUI组件(甚至是套接口服务器、NT的事件记录器、UNIX Syslog守护进程);
-
可以控制每一条日志的输出格式;
-
可以定义每一条日志信息的级别。
使用方法:
1.导入LOG4J的依赖包:
<!-- https://mvnrepository.com/artifact/log4j/log4j --> <dependency> <groupId>log4j</groupId> <artifactId>log4j</artifactId> <version>1.2.17</version> </dependency>
2.建立log4j.properties配置文件:
#将等级为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/log.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.设置LOG4J为日志的实现
<settings> <!--<setting name="logImpl" value="STDOUT_LOGGING"/> <!–标准输出日志–>--> <setting name="logImpl" value="LOG4J"/> <!--LOG4J--> </settings>
进行测试即可。
LOG4J的简单使用
@Test public void TestLog4j(){ logger.debug("debug:进入了LOG4J"); logger.info("info:进入了LOG4J"); logger.error("error::进入了LOG4J"); }
执行即可。
附部分常用日志级别:
logger.debug("debug:进入了LOG4J"); logger.info("info:进入了LOG4J"); logger.error("error::进入了LOG4J");