Драйвер mysql jdbc уже обеспечивает удобство для удовлетворения этого требования, вы должны хотя бы иметь версию jar> = mysql-connect-jar-5.1.6.jar
шаг 1: [настройте свой jdbc.url для добавления регистратора и настраиваемого ведения журнала]
jdbc.url=jdbc:mysql://host:port/your_db?logger=com.mysql.jdbc.log.Slf4JLogger&profileSQL=true&profilerEventHandler=com.xxx.CustomLoggingProfilerEventHandler
теперь используется ведение журнала slf4j. Если по умолчанию используется ведение журнала log4j, необходимо добавить зависимости slf4j-api, slf4j-log4j12, чтобы использовать ведение журнала slf4j
шаг 2: [напишите свою собственную регистрацию]
package com.xxx;
import java.sql.SQLException;
import java.util.Properties;
import com.mysql.jdbc.Connection;
import com.mysql.jdbc.log.Log;
public class CustomLoggingProfilerEventHandler implements ProfilerEventHandler {
private Log log;
public LoggingProfilerEventHandler() {
}
public void consumeEvent(ProfilerEvent evt) {
/**
* you can only print the sql as this.log.logInfo(evt.getMessage())
* you can adjust your sql print log level with: DEBUG,INFO
* you can also handle the message to meet your requirement
*/
this.log.logInfo(evt);
}
public void destroy() {
this.log = null;
}
public void init(Connection conn, Properties props) throws SQLException {
this.log = conn.getLog();
}
}