0% found this document useful (0 votes)
23 views

Logging Frameworks With Slf4J: Com - Mysql.Cj - Log.Standardlogger Stderr

Connector/J supports using the SLF4J logging facade to allow applications to plug in their choice of logging frameworks at deployment time. To use a logging framework with SLF4J and Connector/J, the SLF4J API jar must be included in the classpath along with the binding for the chosen logging framework. Applications obtain an SLF4J logger from the MySQL connection and use it to log messages.

Uploaded by

sandeep
Copyright
© © All Rights Reserved
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
23 views

Logging Frameworks With Slf4J: Com - Mysql.Cj - Log.Standardlogger Stderr

Connector/J supports using the SLF4J logging facade to allow applications to plug in their choice of logging frameworks at deployment time. To use a logging framework with SLF4J and Connector/J, the SLF4J API jar must be included in the classpath along with the binding for the chosen logging framework. Applications obtain an SLF4J logger from the MySQL connection and use it to log messages.

Uploaded by

sandeep
Copyright
© © All Rights Reserved
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
You are on page 1/ 2

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:

o 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.
o 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:

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


o 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.

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

o 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.

o 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://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 1.2.17 as your logging framework when running this
program, use its binding to SLF4J: put slf4j-api-1.7.28.jar (SLF4J API module), slf4j-
log4j12-1.7.28.jar (SLF4J's binding for Log4J 1.2), and log4j-1.2.17.jar (Log4J library)
in your Java classpath.
Here is output of the program when the SELECT statement failed:

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


failed!

You might also like