适用于以下版本:Dev (3.21) | 最新 (3.20) | 3.19 | 3.18 | 3.17 | 3.16 | 3.15 | 3.14 | 3.13 | 3.12 | 3.11

使用 LoggerListener 记录日志

适用于 ✅ 开源版   ✅ 专业版   ✅ 企业版

出于开发目的,jOOQ 将所有 SQL 查询和获取的结果集记录到其内部 DEBUG 日志记录器,该记录器被实现为一个 执行监听器。默认情况下,执行日志记录在 jOOQ 设置中处于激活状态。为了查看任何 DEBUG 日志输出,请将 slf4j 及其各自的配置放在 jOOQ 的 classpath 或模块路径中。可以在此处查看 log4j 的示例配置

<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="INFO">
    <Appenders>
        <Console name="Console" target="SYSTEM_OUT">
            <PatternLayout pattern="%d{ABSOLUTE} %5p [%-50c{4}] - %m%n"/>
        </Console>
    </Appenders>

    <Loggers>
        <!-- SQL execution logging is logged to the LoggerListener logger at DEBUG level -->
        <Logger name="org.jooq.tools.LoggerListener" level="debug">
            <AppenderRef ref="Console"/>
        </Logger>

        <!-- Other jOOQ related debug log output -->
        <Logger name="org.jooq" level="debug">
            <AppenderRef ref="Console"/>
        </Logger>

        <Root level="info">
            <AppenderRef ref="Console"/>
        </Root>
    </Loggers>
</Configuration>

通过以上配置,让我们用 jOOQ 获取一些数据

create.select(BOOK.ID, BOOK.TITLE).from(BOOK).orderBy(BOOK.ID).limit(1, 2).fetch();

上面的查询可能会导致以下日志输出

Executing query          : select "BOOK"."ID", "BOOK"."TITLE" from "BOOK" order by "BOOK"."ID" asc limit ? offset ?
-> with bind values      : select "BOOK"."ID", "BOOK"."TITLE" from "BOOK" order by "BOOK"."ID" asc limit 2 offset 1
Fetched result           : +----+------------+
                         : |  ID|TITLE       |
                         : +----+------------+
                         : |   2|Animal Farm |
                         : |   3|O Alquimista|
                         : +----+------------+

本质上,jOOQ 将记录

  • SQL 语句呈现到预处理语句
  • 带有内联绑定值的 SQL 语句(用于改进调试)
  • 结果的前 5 条记录。这是使用 jOOQ 的文本导出格式化的

如果您希望使用自己的日志记录器(例如,避免打印出敏感数据),您可以使用 您的自定义设置停用 jOOQ 的日志记录器,并实现您自己的 执行监听器日志记录器

反馈

您对此页面有任何反馈吗? 我们很乐意听取您的意见!

The jOOQ Logo