Как войти с MyBatis и Log4J2 - PullRequest
       7

Как войти с MyBatis и Log4J2

0 голосов
/ 07 февраля 2019

Я пытаюсь понять, как вести и настраивать ведение журнала с MyBatis, Spring MVC и Log4J2 в Wildfly.

Моя проблема заключается в том, чтобы понять, как настроить MyBatis, который в данный момент игнорирует моиКонфигурация Log4J2, и я хочу настроить ее только на Java.

org.apache.ibatis.session.Configuration, кажется, класс, который мне нужен, и я нашел, как установить некоторые конфигурации, такие как JdbcTypeForNull.Я установил Log4J2 (setLogImpl (Log4j2Impl.class)), но я уже сделал это с

    org.apache.ibatis.logging.LogFactory.useLog4J2Logging();

Что я не понимаю, так это то, что MyBatis игнорирует мой файл log4j2.properties и говорит:

Свойство 'configuration' или 'configLocation' не указано, используется конфигурация MyBatis по умолчанию

Это мой 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.

1 Ответ

0 голосов
/ 18 июня 2019

Вот одна из лучших практик Spring + myBatis.https://github.com/mybatis/jpetstore-6.

Внутри проекта вы можете найти applicationContext.xml по адресу "jpetstore-6-master \ src \ main \ webapp \ WEB-INF".

добавить свойство (значение - путь, гдеФайл конфигурации находится в)

<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();

Давайте вернемся,

Свойство 'configuration' или 'configLocation' не указано, используется конфигурация MyBatis по умолчанию

  • конфигурация является элементом в 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.
...