下面为您提供详细的攻略,包含以下内容:
- 环境准备
- 引入Log4j2依赖
- 配置Log4j2文件
- 在MyBatis中配置Log4j2
- 示例代码说明
环境准备
在进行Log4j2和MyBatis的整合之前,需要先准备好以下环境:
- JDK1.8及以上
- Maven3.0及以上
- MyBatis3.0及以上
- Log4j2
引入Log4j2依赖
在pom.xml文件中引入Log4j2的依赖:
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-core</artifactId>
<version>2.14.1</version>
</dependency>
配置Log4j2文件
在Log4j2的配置文件中,我们需要设置两个参数:要输出的日志级别和输出到的文件路径。
示例代码:
<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="WARN">
<Appenders>
<Console name="Console" target="SYSTEM_OUT">
<PatternLayout pattern="%d{yyyy-MM-dd HH:mm:ss,SSS} [%t] %-5level %logger{36} - %msg%n"/>
</Console>
<RollingFile name="RollingFile" fileName="logs/log4j2.log"
filePattern="logs/$${date:yyyy-MM}/log-%d{yyyy-MM-dd}-%i.log.gz">
<PatternLayout pattern="%d{yyyy-MM-dd HH:mm:ss} [%t] %-5level %logger{36} - %msg%n"/>
<Policies>
<TimeBasedTriggeringPolicy />
<SizeBasedTriggeringPolicy size="10MB"/>
</Policies>
<DefaultRolloverStrategy max="5"/>
</RollingFile>
</Appenders>
<Loggers>
<Logger name="com.example.mapper" level="debug"/>
<Root level="error">
<AppenderRef ref="Console"/>
<AppenderRef ref="RollingFile"/>
</Root>
</Loggers>
</Configuration>
在上述代码中,我们设置了输出到控制台和输出到文件的Appender。输出到文件我们使用了RollingFile Appender,并设置了日志文件的大小和数量。在Logger中,我们设置了Mapper包下的日志输出级别为debug,Root logger的日志输出级别为error。
在MyBatis中配置Log4j2
在MyBatis的配置文件中,我们需要将Log4j2作为日志实现类,并且设置sql语句输出和参数输出的日志级别。
示例代码:
<configuration>
<settings>
<setting name="logImpl" value="LOG4J2"/>
</settings>
<typeAliases>
...
</typeAliases>
<mappers>
...
</mappers>
<environments default="development">
<environment id="development">
<transactionManager type="JDBC"/>
<dataSource type="POOLED">
<property name="driver" value="${jdbc.driverClassName}"/>
<property name="url" value="${jdbc.url}"/>
<property name="username" value="${jdbc.username}"/>
<property name="password" value="${jdbc.password}"/>
</dataSource>
</environment>
</environments>
<plugins/>
<objectFactory type="org.mybatis.spring.factory.SpringObjectFactory"/>
<objectWrapperFactory type="org.apache.ibatis.reflection.wrapper.DefaultObjectWrapperFactory"/>
<reflectorFactory type="org.apache.ibatis.reflection.DefaultReflectorFactory"/>
<properties>
<property name="dialect" value="mysql"/>
<property name="logLevel" value="debug"/>
<property name="logImpl" value="LOG4J2"/>
</properties>
</configuration>
在上述代码中,我们设置了Log4j2作为日志实现类,并设置了sql语句输出和参数输出的日志级别为debug。
示例代码说明
下面是一个MyBatis中使用Log4j2打印sql的示例代码:
public class MybatisUtil {
private static SqlSessionFactory sessionFactory;
static {
String resource = "mybatis-config.xml";
InputStream inputStream = null;
try {
inputStream = Resources.getResourceAsStream(resource);
} catch (IOException e) {
e.printStackTrace();
}
sessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
}
public static SqlSession getSession() {
return sessionFactory.openSession();
}
}
在上述代码中,我们将MyBatis的SqlSessionFactory设置为静态变量,并在静态代码块中进行初始化。
下面是一个使用Log4j2打印sql的示例Mapper:
@Mapper
public interface UserMapper {
@Select("SELECT * FROM user WHERE id = #{id}")
@ResultMap("userMap")
User getUserById(@Param("id") int id);
}
在上述代码中,我们使用@Select注解来定义一个sql语句,并使用@Param注解来定义参数。同时,我们在mapper接口上使用了@Mapper注解,这样MyBatis才能扫描到该接口。
完成了以上配置之后,通过以上两个示例代码,MyBatis就会输出sql语句和参数了。您可以在控制台中看到sql语句和参数的值,也可以在log4j2.log文件中查看sql语句和参数的详细信息。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:mybatis log4j2打印sql+日志实例代码 - Python技术站