文件首頁
MySQL Connector/J 開發人員指南
相關文件 下載本手冊
PDF (US Ltr) - 1.2Mb
PDF (A4) - 1.2Mb


MySQL Connector/J 開發人員指南  /  使用 SLF4J 記錄框架

第 12 章  使用 SLF4J 記錄框架

除了其預設記錄器 com.mysql.cj.log.StandardLogger(將記錄寫入 stderr)之外,Connector/J 也支援 SLF4J 記錄外觀,允許使用 Connector/J 的應用程式的最終使用者在部署時插入自己選擇的記錄框架。SLF4J 支援諸如 java.util.logginglogbacklog4j 等常用的記錄框架。請遵循下列需求,以使用 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 類別路徑中

以下為 SELECT 陳述式失敗時程式的輸出

[2021-09-05 12:06:19,624] WARN     0[main] - WARN MySQL - Warning: Select failed!