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