除了其預設記錄器 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 使用者手冊。以下為搭配 Connector/J 使用 SLF4J 的範例程式碼
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
(Log4J 2.17.1 的 SLF4J 繫結,可於例如 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!