Mybatis 日志配置
要查看MyBatis的日志语句,您可以在一个包、一个完全限定的映射器类名、一个命名空间或一个完全限定的语句名称上启用日志记录。
再次强调,如何做这取决于所使用的日志实现。我们将展示如何在SLF4J(Logback)中进行配置。配置日志服务只需添加一个或多个额外的配置文件(例如logback.xml),有时还需要添加一个新的JAR文件。以下示例配置将使用SLF4J(Logback)作为提供程序配置完整的日志服务。有2个步骤。
第一步: 添加 SLF4J 和 Logback JAR包
由于我们使用SLF4J(Logback),我们需要确保它的JAR文件对我们的应用程序可用。要使用SLF4J(Logback),您需要将JAR文件添加到应用程序的类路径中。
对于Web或企业应用程序,您可以将logback-classic.jar、logback-core.jar和slf4j-api.jar添加到您的WEB-INF/lib目录中,或者对于独立应用程序,您可以直接将其添加到JVM的-classpath启动参数中。
如果您使用Maven,您可以通过在pom.xml文件中添加以下设置来下载JAR文件。
<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-classic</artifactId>
<version>1.x.x</version>
</dependency>
第二步: 配置 Logback
配置Logback非常简单。假设您想要启用这个Mapper的日志:
package org.mybatis.example;
public interface BlogMapper {
@Select("SELECT * FROM blog WHERE id = #{id}")
Blog selectBlog(int id);
}
?创建一个名为logback.xml的文件,内容如下,并将其放置在类路径中:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE configuration>
<configuration>
<appender name="stdout" class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<pattern>%5level [%thread] - %msg%n</pattern>
</encoder>
</appender>
<logger name="org.mybatis.example.BlogMapper">
<level value="trace"/>
</logger>
<root level="error">
<appender-ref ref="stdout"/>
</root>
</configuration>
上述文件将导致SLF4J(Logback)对org.mybatis.example.BlogMapper进行详细的日志记录,并对应用程序的其他类仅报告错误。
如果您想在更细的级别上调整日志记录,可以仅针对特定的语句而不是整个映射器文件开启日志记录。以下代码可仅为selectBlog语句启用日志记录:
<logger name="org.mybatis.example.BlogMapper.selectBlog">
<level value="trace"/>
</logger>
相反地,您可能希望为一组映射器启用日志记录。在这种情况下,您应该将包含映射器的根包添加为一个记录器:
<logger name="org.mybatis.example">
<level value="trace"/>
</logger>
有些查询可能返回大量的结果集。在这种情况下,您可能只想看到SQL语句而不是结果。为了实现这个目的,SQL语句被记录在DEBUG级别(JDK日志中的FINE级别),结果被记录在TRACE级别(JDK日志中的FINER级别)。因此,如果您只想看到语句而不是结果,请将日志级别设置为DEBUG。
<logger name="org.mybatis.example">
<level value="debug"/>
</logger>
如果您没有使用映射器接口,而是使用类似这样的映射器XML文件,该怎么办呢?
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"https://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="org.mybatis.example.BlogMapper">
<select id="selectBlog" resultType="Blog">
select * from Blog where id = #{id}
</select>
</mapper>
在这种情况下,您可以通过添加一个与命名空间相对应的记录器来为整个XML文件启用日志记录,示例如下:
<logger name="org.mybatis.example.BlogMapper">
<level value="trace"/>
</logger>
或者针对特定语句进行配置:
<logger name="org.mybatis.example.BlogMapper.selectBlog">
<level value="trace"/>
</logger>
是的,正如您可能已经注意到的那样,在配置映射器接口或XML映射器文件的日志记录时没有任何区别。
注意:如果您正在使用SLF4J或Log4j 2,MyBatis将使用标记MYBATIS来调用它。
配置Log4j 2的例子
<!-- pom.xml -->
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-core</artifactId>
<version>2.x.x</version>
</dependency>
<!-- log4j2.xml -->
<?xml version="1.0" encoding="UTF-8"?>
<Configuration xmlns="http://logging.apache.org/log4j/2.0/config">
<Appenders>
<Console name="stdout" target="SYSTEM_OUT">
<PatternLayout pattern="%5level [%t] - %msg%n"/>
</Console>
</Appenders>
<Loggers>
<Logger name="org.mybatis.example.BlogMapper" level="trace"/>
<Root level="error" >
<AppenderRef ref="stdout"/>
</Root>
</Loggers>
</Configuration>
配置Log4j的例子
<!-- pom.xml -->
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.17</version>
</dependency>
# log4j.properties
log4j.rootLogger=ERROR, stdout
log4j.logger.org.mybatis.example.BlogMapper=TRACE
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%5p [%t] - %m%n
配置 JDK logging的例子
# logging.properties
handlers=java.util.logging.ConsoleHandler
.level=SEVERE
org.mybatis.example.BlogMapper=FINER
java.util.logging.ConsoleHandler.level=ALL
java.util.logging.ConsoleHandler.formatter=java.util.logging.SimpleFormatter
java.util.logging.SimpleFormatter.format=%1$tT.%1$tL %4$s %3$s - %5$s%6$s%n
?
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!