除了默认的记录器 com.mysql.cj.log.StandardLogger
(记录到 stderr
)之外,Connector/J 还支持 SLF4J 日志记录外观,允许使用 Connector/J 的应用程序的最终用户在部署时插入自己选择的日志记录框架。SLF4J 支持流行的日志记录框架,例如 java.util.logging
、logback
和 log4j
。请按照以下要求将日志记录框架与 SLF4J 和 Connector/J 一起使用
-
在开发环境中
在您的系统上安装
slf4j-api-x.y.z.jar
(可从 https://www.slf4j.org/download.html 获得)并将其添加到 Java 类路径中。在应用程序的代码中,获取一个
SLF4JLogger
作为在MysqlConnection
Session
内实例化的Log
,然后使用Log
实例进行日志记录。
-
在部署系统上
在您的系统上安装
slf4j-api-x.y.z.jar
并将其添加到 Java 类路径中-
在您的系统上安装您选择的日志记录框架的 SLF4J 绑定,并将其添加到您的 Java 类路径中。SLF4J 绑定可在以下位置获得,例如 https://www.slf4j.org/manual.html#swapping。
注意不要在 Java 类路径中放置多个 SLF4J 绑定。通过删除一个绑定并将一个新绑定添加到类路径中,可以从一个日志记录框架切换到另一个。
在您的系统上安装您选择的日志记录框架,并将其添加到 Java 类路径中。
配置您选择的日志记录框架。这通常包括使用配置文件为日志消息设置追加器或处理程序;有关详细信息,请参阅您的日志记录框架的文档。
将应用程序连接到 MySQL 服务器时,将 Connector/J 连接属性
logger
设置为Slf4JLogger
。
Connector/J 与 SLF4J 一起使用的日志类别名称是 MySQL
。有关使用 SLF4J 的更多详细信息,包括关于 Maven 依赖项和绑定的讨论,请参阅 SLF4J 用户手册。以下是将 SLF4J 与 Connector/J 一起使用的示例代码
import java.sql.DriverManager;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import com.mysql.cj.jdbc.JdbcConnection;
import com.mysql.cj.log.Log;
public class JDBCDemo {
public static void main(String[] args) {
Connection conn = null;
Statement statement = null;
ResultSet resultSet = null;
Log logger = null;
try {
// Database parameters
String url = "jdbc:mysql://myexample.com:3306/pets?logger=Slf4JLogger&explainSlowQueries=true";
String user = "user";
String password = "password";
// create a connection to the database
conn = DriverManager.getConnection(url, user, password);
logger = ((JdbcConnection)conn).getSession().getLog();
}
catch (SQLException e) {
System.err.println(e.getMessage());
System.exit(1);
}
try {
statement = conn.createStatement();
resultSet = statement.executeQuery("SELECT * FROM pets.dogs");
while(resultSet.next()){
System.out.printf("%d\t%s\t%s\t %4$ty.%4$tm.%4$td \n",
resultSet.getInt(1),
resultSet.getString(2),
resultSet.getString(3),
resultSet.getDate(4));
}
}
catch(SQLException e) {
logger.logWarn("Warning: Select failed!");
}
}
}
例如,如果您想在运行此程序时使用 Log4j 2.17.1 作为您的日志记录框架,请将以下 JAR 文件放在您的 Java 类路径中
slf4j-api-2.0.3.jar
(SLF4J API 模块,例如,可从 https://central.sonatype.com/artifact/org.slf4j/slf4j-api/2.0.3/jar 获得)。log4j-api-2.17.1.jar
和log4j-core-2.17.1.jar
(Log4J 库,例如,可从 https://central.sonatype.com/artifact/org.apache.logging.log4j/log4j-api/2.17.1/jar 和 https://central.sonatype.com/artifact/org.apache.logging.log4j/log4j-core/2.17.1/jar 获得)。log4j-slf4j-impl-2.17.1.jar
(SLF4J 针对 Log4J 2.17.1 的绑定,例如,可从 https://central.sonatype.com/artifact/org.apache.logging.log4j/log4j-slf4j-impl/2.17.1/jar 获得)。
以下是 SELECT 语句失败时程序的输出
[2021-09-05 12:06:19,624] WARN 0[main] - WARN MySQL - Warning: Select failed!