2015-09-29 1 views
1

Я использую библиотеку JOOQ для генерации и выполнения SQL-запросов. По причинам отладки я хочу посмотреть, какие именно запросы выполняются, не обращаясь к изменяющейся базе данных каждый раз. Я думаю, что jooq framework должен показывать много информации о запросах и их эффектах, если уровень журнала установлен на отладку. Я использую log4j2 для регистрации, и устанавливается для отладки с помощью следующей конфигурации:Jooq не находит log4j2 Logger

<?xml version="1.0" encoding="UTF-8"?> 
<configuration status="DEBUG" packages="ch.fhnw.ima.doggait"> 
    <appenders> 
     <Console name="Console" target="SYSTEM_OUT"> 
      <PatternLayout pattern="%d{HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n"/> 
     </Console> 
    </appenders> 

    <loggers> 
     <root level="DEBUG"> 
      <appender-ref ref="Console"/> 
     </root> 
    </loggers> 
</configuration> 

Unfortunally Похоже JOOQ использует другой регистратор, который установлен для информации. Это пример вывода:

2015-09-29 10: 15: 04064 ОТЛАДКА Выключение .. 2015-09-29 10: 15: 04065 ОТЛАДКА LoggerCo .. 2015-09-29 10:15 : 04,111 DEBUG Использование d ... 10: 15: 04.116 [Тест рабочий] DEBUG ch.fh .. 29 сентября 2015 г. 10:15:04 AM org.jooq.tools.JooqLogger info ИНФОРМАЦИЯ: @@@ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@

Вы можете увидеть первый несколько строк регистрируются в режиме отладки log4j2, но Jooq использует JooqLogger в информации уровня. загружает обе библиотеки с помощью Gradle:

compile group: 'com.google.inject',    name: 'guice-parent',    version: '3.0' 
compile group: 'com.google.inject.extensions', name: 'guice-persist',    version: '3.0' 
compile group: 'org.hibernate',     name: 'hibernate-entitymanager', version: '4.3.8.Final' 
compile group: 'com.h2database',    name: 'h2',       version: '1.4.185' 
compile group: 'org.apache.commons',   name: 'commons-math3',    version: '3.2' 
compile group: 'org.apache.logging.log4j',  name: 'log4j-core',     version: '2.0.2' 
compile group: 'org.apache.logging.log4j',  name: 'log4j-api',     version: '2.0.2' 
compile group: 'org.hamcrest',     name: 'hamcrest-all',    version: '1.3' 
compile group: 'org.apache.pdfbox',    name: 'pdfbox',      version: '1.8.10' 
compile group: 'postgresql',     name:'postgresql',     version:'9.0-801.jdbc4' 
compile group: 'org.jooq',      name:'jooq',      version:'3.6.3' 
compile group: 'org.jooq',      name:'jooq-meta',     version:'3.6.3' 
compile group: 'org.jooq',      name:'jooq-codegen',    version:'3.6.3' 

testCompile 'junit:junit:4.11' 

Знает ли кто, почему jooq не использует log4j2 в качестве регистратора по умолчанию, или как я могу установить его войти в уровне отладки?

ответ

1

jOOQ по-прежнему использует log4j 1.2 по умолчанию, внутренне. Вы должны использовать эту версию (пока) или вместо slf4j.

Есть несколько художественных запросы, чтобы улучшить эту зависимость в jOOQ:

+0

Хорошо. Спасибо за разъяснения. Я переключился на log4j 1.2, который работает. Надеемся, что запросы будут решены в ближайшее время. – TardigradeX

0

Я знаю, что это немного поздно, но я нашел такую ​​же проблему, и я исправил это с помощью самого апача. Вы можете включить этот адаптер в вашем пути к классам, он соединяет log4j2 с log4j 1,2

  • log4j-1,2-апи-2.6.1.jar

Но, вы не должны иметь log4j 1,2 банки или конфигурации файлов в вашем пути к классам. Короче говоря, сделайте все с log4j2 и просто включите выше jar.

Для дальнейшего чтения: http://logging.apache.org/log4j/2.x/faq.html#which_jars

Этот SO вопрос помог мне: Configuring log4j2 and log4j using a single log4j2 xml file