Documentation Home
MySQL Connector/J Developer Guide
Related Documentation Download this Manual
PDF (US Ltr) - 1.2Mb
PDF (A4) - 1.2Mb


MySQL Connector/J Developer Guide  /  Using Logging Frameworks with SLF4J

Chapter 12 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 https://www.slf4j.org/download.html) 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, https://www.slf4j.org/manual.html#swapping.

      Note

      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:

Press CTRL+C to copy
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!"); } } }

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:

Press CTRL+C to copy
[2021-09-05 12:06:19,624] WARN 0[main] - WARN MySQL - Warning: Select failed!