Jooq 找不到 log4j2 Logger
Jooq does not find log4j2 Logger
我正在使用 JOOQ 库生成和执行 SQL 查询。出于调试原因,我想查看到底执行了哪些查询,而无需每次都查看不断变化的数据库。我认为如果日志级别设置为调试,jooq 框架应该显示很多关于查询及其效果的信息。我使用 log4j2 进行日志记录,并使用以下配置将其设置为调试:
<?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>
不幸的是,JOOQ 似乎使用了另一个设置为信息的记录器。
这是一个示例输出:
2015-09-29 10:15:04,064 DEBUG Shutdown.. 2015-09-29 10:15:04,065 DEBUG
LoggerCo.. 2015-09-29 10:15:04,111 DEBUG Using d... 10:15:04.116 [Test
worker] DEBUG ch.fh.. Sep 29, 2015 10:15:04 AM
org.jooq.tools.JooqLogger info
INFORMATION:
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@....
你可以看到前几行是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 作为默认记录器,或者我如何将它设置为以调试级别登录?
jOOQ 仍在内部默认使用 log4j 1.2。您应该使用那个版本(现在),或者 slf4j。
有几个功能请求可以改进 jOOQ 中的这些依赖关系:
我知道有点晚了,但我发现了同样的问题,并在 apache 本身的帮助下修复了它。
您可以在类路径中包含此适配器,它将 log4j2 与 log4j 1.2
桥接
- log4j-1.2-api-2.6.1.jar
但是,您的类路径中不能有 log4j 1.2 jar 或配置文件。简而言之,用 log4j2 做所有事情,只包含上面的 jar。
进一步阅读:http://logging.apache.org/log4j/2.x/faq.html#which_jars
这个 SO 问题对我有帮助:Configuring log4j2 and log4j using a single log4j2 xml file
我正在使用 JOOQ 库生成和执行 SQL 查询。出于调试原因,我想查看到底执行了哪些查询,而无需每次都查看不断变化的数据库。我认为如果日志级别设置为调试,jooq 框架应该显示很多关于查询及其效果的信息。我使用 log4j2 进行日志记录,并使用以下配置将其设置为调试:
<?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>
不幸的是,JOOQ 似乎使用了另一个设置为信息的记录器。 这是一个示例输出:
2015-09-29 10:15:04,064 DEBUG Shutdown.. 2015-09-29 10:15:04,065 DEBUG LoggerCo.. 2015-09-29 10:15:04,111 DEBUG Using d... 10:15:04.116 [Test worker] DEBUG ch.fh.. Sep 29, 2015 10:15:04 AM org.jooq.tools.JooqLogger info INFORMATION: @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@....
你可以看到前几行是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 作为默认记录器,或者我如何将它设置为以调试级别登录?
jOOQ 仍在内部默认使用 log4j 1.2。您应该使用那个版本(现在),或者 slf4j。
有几个功能请求可以改进 jOOQ 中的这些依赖关系:
我知道有点晚了,但我发现了同样的问题,并在 apache 本身的帮助下修复了它。 您可以在类路径中包含此适配器,它将 log4j2 与 log4j 1.2
桥接- log4j-1.2-api-2.6.1.jar
但是,您的类路径中不能有 log4j 1.2 jar 或配置文件。简而言之,用 log4j2 做所有事情,只包含上面的 jar。
进一步阅读:http://logging.apache.org/log4j/2.x/faq.html#which_jars
这个 SO 问题对我有帮助:Configuring log4j2 and log4j using a single log4j2 xml file