【发布时间】:2014-05-12 12:46:46
【问题描述】:
有没有办法使用 MariaDB jdbc 驱动程序在 java 中记录查询?
我正在使用 MySQL 驱动程序
profileSQL=true
logger=com.mysql.jdbc.log.Slf4JLogger
在开发机器上记录查询(使调试更容易)。
我意识到像 log4jdbc 这样的东西存在 - 我需要使用这样的库还是 mariadb 驱动程序有内置的东西?
【问题讨论】:
有没有办法使用 MariaDB jdbc 驱动程序在 java 中记录查询?
我正在使用 MySQL 驱动程序
profileSQL=true
logger=com.mysql.jdbc.log.Slf4JLogger
在开发机器上记录查询(使调试更容易)。
我意识到像 log4jdbc 这样的东西存在 - 我需要使用这样的库还是 mariadb 驱动程序有内置的东西?
【问题讨论】:
从 1.5.0 开始,log is supported。
【讨论】:
正如 Lundberg 所说,从 1.5.0 版开始可以进行日志记录,请参阅 here。
为了激活它,我在我的数据库 URL 中添加了 &log=true。然而,这还不够。正如here 解释的那样,还需要以下步骤:
首先,我们需要添加一些依赖:
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>[1.4.0,1.7.25]</version>
</dependency>
<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-classic</artifactId>
<version>1.2.3</version>
</dependency>
然后我们需要像给定的示例一样配置 logback:
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
<encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
<pattern>%d{yyyy-MM-dd HH:mm:ss} [%thread] %-5level %logger{36} - %msg%n</pattern>
</encoder>
</appender>
<logger name="org.mariadb.jdbc" level="trace" additivity="false">
<appender-ref ref="STDOUT"/>
</logger>
<root level="error">
<appender-ref ref="STDOUT"/>
</root>
</configuration>
“跟踪”日志级别提供了很多信息,因此您可能需要使用另一个。当前支持的日志级别有:trace、debug、info、warn 或 error
【讨论】:
目前无法从 mariadb java 客户端记录 sql 查询。
但是,如果有帮助,您可以使用 dumpQueriesOnException。
【讨论】: