【问题标题】:Jooq does not find log4j2 LoggerJooq 没有找到 log4j2 记录器
【发布时间】:2015-09-29 08:38:43
【问题描述】:

我正在使用 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 使用了另一个设置为 info 的记录器。 这是一个示例输出:

2015-09-29 10:15:04,064 调试关闭.. 2015-09-29 10:15:04,065 调试 LoggerCo.. 2015-09-29 10:15:04,111 DEBUG Using d... 10:15:04.116 [测试 工人] DEBUG ch.fh.. 2015 年 9 月 29 日上午 10:15:04 org.jooq.tools.JooqLogger 信息 信息: @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@....

您可以看到前几行是由 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 作为默认记录器,或者我如何将其设置为登录调试级别?

【问题讨论】:

    标签: log4j log4j2 jooq


    【解决方案1】:

    jOOQ 在内部仍然默认使用 log4j 1.2。你应该使用那个版本(现在),或者 slf4j。

    在 jOOQ 中有几个功能请求可以改善这些依赖关系:

    【讨论】:

    • 好的。感谢您的澄清。我切换到有效的 log4j 1.2。希望这些请求能尽快得到解决。
    【解决方案2】:

    我知道这有点晚了,但我发现了同样的问题,并在 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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-09-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-10-16
      • 2018-06-01
      • 1970-01-01
      • 2018-02-26
      相关资源
      最近更新 更多