Documentation Home
Connectors and APIs Manual
Download this Manual
PDF (US Ltr) - 4.1Mb
PDF (A4) - 4.1Mb

Connectors and APIs Manual  /  MySQL Connector/J Developer Guide  /  Using Logging Frameworks with SLF4J

3.11 Using Logging Frameworks with SLF4J

Besides its default logger com.mysql.cj.log.StandardLogger, which logs to stderr, Connector/J supports the SLF4J logging facade, allowing end users of applications using Connector/J to plug in logging frameworks of their own choices at deployment time. Popular logging frameworks such as java.util.logging, logback, and log4j are supported by SLF4J. Follow these requirements to use a logging framework with SLF4J and Connector/J:

  • In the development environment:

    • Install on your system slf4j-api-x.y.z.jar (available at and add it to the Java classpath.

    • In the code of your application, obtain an SLF4JLogger as a Log instantiated within a MysqlConnection Session, and then use the Log instance for your logging.

  • On the deployment system:

    • Install on your system slf4j-api-x.y.z.jar and add it to the Java classpath

    • Install on your system the SLF4J binding for the logging framework of your choice and add it to your Java classpath. SLF4J bindings are available at, for example,


      Do not put more than one SLF4J binding in you Java classpath. Switch from one logging framework to another by removing a binding and adding a new one to the classpath.

    • Install the logging framework of your choice on your system and add it to the Java classpath.

    • Configure the logging framework of your choice. This often consists of setting up appenders or handlers for log messages using a configuration file; see your logging framework's documentation for details.

    • When connecting the application to the MySQL Server, set the Connector/J connection property logger to Slf4JLogger.

The log category name used by Connector/J with SLF4J is MySQL. See the SLF4J user manual for more details about using SLF4J, including discussions on Maven dependency and bindings. Here is a sample code for using SLF4J with 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://";
     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) {
  try {
     statement = conn.createStatement();
     resultSet = statement.executeQuery("SELECT * FROM pets.dogs");
       System.out.printf("%d\t%s\t%s\t %4$ty.%4$tm.%4$td \n",
  catch(SQLException e) {
     logger.logWarn("Warning: Select failed!");

If you want to use, for example, Log4j 2.17.1 as your logging framework when running this program, put these JAR files in your Java classpath:

Here is output of the program when the SELECT statement failed:

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