使用 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 的日志记录器,并实现您自己的 执行监听器日志记录器。
反馈
您对此页面有任何反馈吗? 我们很乐意听取您的意见!