java-JOOQ Log4j-缺少控制台输出

我对日志记录有疑问,因为它描述为here.

我的代码:

Class.forName("com.mysql.jdbc.Driver").newInstance();
conn = DriverManager.getConnection(url, userName, password);

Settings settings = new Settings();
settings.withRenderFormatted(true);
settings.setExecuteLogging(true);

DSLContext dslContext = DSL.using(conn, SQLDialect.MYSQL,  settings);


dslContext.select(USER.USERID, USER.IMIE, USER.NAZWISKO).from(USER).orderBy(USER.USERID).limit(1, 2).fetch();

而且我的控制台中什么也没有

这是我的log4j.xml:

<?xml version="1.0" encoding="UTF-8"?>
<log4j:configuration>
    <appender name="stdout" class="org.apache.log4j.ConsoleAppender">
        <layout class="org.apache.log4j.PatternLayout">
            <param name="ConversionPattern" value="%m%n" />
        </layout>
    </appender>

    <root>
        <priority value="debug" />
        <appender-ref ref="stdout" />
    </root>
</log4j:configuration>

和我的IVY依赖项:

<dependency org="org.jooq" name="jooq" rev="3.2.2"/>
<dependency org="org.jooq" name="jooq-codegen" rev="3.2.2"/>
<dependency org="org.jooq" name="jooq-meta" rev="3.2.2"/>

<dependency org="mysql" name="mysql-connector-java" rev="5.1.26"/>
<dependency org="log4j" name="log4j" rev="1.2.16"/>
<dependency org="org.slf4j" name="slf4j-simple" rev="1.7.4"/>

解决方法:

据我所读的代码(参见org.jooq.tools.JooqLogger),Jooq试图加载每个记录器直到成功为止,猜测记录器要使用.考虑到ivy.xml,您同时拥有Log4j和slf4j. Jooq首先尝试slf4j.因此不使用Log4j.

因此,您需要从依赖项中删除slf4j-simple.

如果确实需要slf4j记录器,请尝试slf4j-log4j12,它将slf4j日志重定向到log4j.

上一篇:[转] Slf4j MDC机制


下一篇:java-无法使日志记录与嵌入式Jetty一起正常工作