我想了解如何在Wildfly上使用MyBatis,Spring MVC和Log4J2进行配置。
我的问题是了解如何设置MyBatis,目前该MyBatis忽略了我的Log4J2配置,我只想使用Java进行设置。
org.apache.ibatis.session.Configuration似乎是我需要的类,我发现了如何设置一些配置,例如JdbcTypeForNull。我发现设置了Log4J2(setLogImpl(Log4j2Impl.class)),但是我已经用
org.apache.ibatis.logging.LogFactory.useLog4J2Logging();
我不明白的是为什么MyBatis忽略我的log4j2.properties文件并说:
使用默认的MyBatis配置未指定属性“配置”或“ configLocation”
这是我的log4j2.properties
name=LoggingConfig
property.filename = logs
appenders = console, file
appender.console.type = Console
appender.console.name = STDOUT
appender.console.layout.type = PatternLayout
appender.console.layout.pattern = [%-5level] %d{yyyy-MM-dd HH:mm:ss.SSS} %c{1} - %msg
appender.file.type = File
appender.file.name = LOGFILE
appender.file.fileName=../LOGS/logs.log
appender.file.layout.type=PatternLayout
appender.file.layout.pattern=[%-5level] %d{yyyy-MM-dd HH:mm:ss.SSS} [%t] %c{1} - %msg
loggers=console
logger.console.name=myPrj.database.mybatis.mappers
logger.console.level=DEBUG
logger.console.additivity=true
logger.console.appenderRef.console.ref = STDOUT
logger.console.myPrj.database.mybatis.mappers.MainMapper=TRACE
rootLogger.level = ALL
rootLogger.appenderRefs = stdout
rootLogger.appenderRef.stdout.ref = STDOUT
有什么建议吗?我发现官方文档真的很差,只有xml配置,只有log4j。
答案 0 :(得分:0)
这是Spring + myBatis的最佳实践之一。 https://github.com/mybatis/jpetstore-6。
在内部项目中,您可以在“ jpetstore-6-master \ src \ main \ webapp \ WEB-INF”处找到applicationContext.xml。
添加属性(值是配置文件所在的路径)
<property name="configLocation" value="/WEB-INF/mybatis-config.xml"/>
如下所示访问mybatis-config.xml。
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
<property name="dataSource" ref="dataSource" />
<property name="typeAliasesPackage" value="org.mybatis.jpetstore.domain" />
<property name="configLocation" value="/WEB-INF/mybatis-config.xml"/>
</bean>
并在同一目录中创建文件“ mybatis-config.xml”,如下所示。 编写此文件时要小心,内容应遵循mybatis-3-config.dtd。(尤其是元素顺序)
<?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>
<settings>
<setting name="logImpl" value="LOG4J2"/>
</settings>
</configuration>
MyBatis日志工厂将使用它找到的第一个日志记录实现(以上述顺序搜索实现) -参考:[1]:http://www.mybatis.org/mybatis-3/logging.html
因此,您无需在代码中调用此方法。
org.apache.ibatis.logging.LogFactory.useLog4J2Logging();
让我们回来,
使用默认的MyBatis配置未指定属性'configuration'
或'configLocation'
配置是mybatis-config.xml中的元素。 -> mybatis没有配置。
configLocation是context.xml中的属性名称。 ->找不到配置文件所在的位置。
如果运行良好,您可以在控制台输出上看到此行。
"Slf4jImpl"
是其实现的第一项,但它将改变
2019-06-18 14:10:54,324 [main] DEBUG o.a.i.l.LogFactory:105 - Logging initialized using 'class org.apache.ibatis.logging.slf4j.Slf4jImpl' adapter.
及其后的几行
2019-06-18 14:10:59,849 [main] DEBUG o.a.i.l.LogFactory:105 - Logging initialized using 'class org.apache.ibatis.logging.log4j2.Log4j2Impl' adapter.