HHH-16909 make setting for slow query logging obey our naming conventions

This commit is contained in:
Gavin King 2023-07-07 11:01:00 +02:00
parent 94b33e6198
commit 33700597af
2 changed files with 29 additions and 18 deletions

View File

@ -2267,6 +2267,15 @@ public interface AvailableSettings {
*/
String GENERATE_STATISTICS = "hibernate.generate_statistics";
/**
* Specifies a duration in milliseconds defining the minimum query execution time that
* characterizes a "slow" query. Any SQL query which takes longer than this amount of
* time to execute will be logged.
* <p>
* A value of {@code 0}, the default, disables logging of "slow" queries.
*/
String LOG_SLOW_QUERY = "hibernate.log_slow_query";
/**
* Controls whether {@linkplain org.hibernate.stat.SessionStatistics session metrics}
* should be {@linkplain org.hibernate.engine.internal.StatisticalLoggingSessionEventListener
@ -2277,15 +2286,6 @@ public interface AvailableSettings {
*/
String LOG_SESSION_METRICS = "hibernate.session.events.log";
/**
* Specifies a duration in milliseconds defining the minimum query execution time that
* characterizes a "slow" query. Any SQL query which takes longer than this amount of
* time to execute will be logged.
* <p>
* A value of {@code 0}, the default, disables logging of "slow" queries.
*/
String LOG_SLOW_QUERY = "hibernate.session.events.log.LOG_QUERIES_SLOWER_THAN_MS";
/**
* Defines a default {@link org.hibernate.SessionEventListener} to be applied to
* newly-opened {@link org.hibernate.Session}s.

View File

@ -9,27 +9,38 @@ package org.hibernate.engine.jdbc.internal;
import java.util.Map;
import org.hibernate.boot.registry.StandardServiceInitiator;
import org.hibernate.cfg.Environment;
import org.hibernate.engine.jdbc.spi.SqlStatementLogger;
import org.hibernate.internal.util.config.ConfigurationHelper;
import org.hibernate.service.spi.ServiceRegistryImplementor;
import static org.hibernate.cfg.AvailableSettings.FORMAT_SQL;
import static org.hibernate.cfg.AvailableSettings.HIGHLIGHT_SQL;
import static org.hibernate.cfg.AvailableSettings.LOG_SLOW_QUERY;
import static org.hibernate.cfg.AvailableSettings.SHOW_SQL;
import static org.hibernate.internal.util.config.ConfigurationHelper.getBoolean;
import static org.hibernate.internal.util.config.ConfigurationHelper.getLong;
/**
* The {@link SqlStatementLogger} is accessible via {@link org.hibernate.engine.jdbc.spi.JdbcServices},
* but during service initialization, it might be needed before the {@code JdbcServices} service is initialized.
*
* For Hibernate Reactive
* but during service initialization, it might be needed before the {@code JdbcServices} service is
* initialized.
*/
public class SqlStatementLoggerInitiator implements StandardServiceInitiator<SqlStatementLogger> {
// this deprecated property name never respected our conventions
private static final String OLD_LOG_SLOW_QUERY = "hibernate.session.events.log.LOG_QUERIES_SLOWER_THAN_MS";
public static final SqlStatementLoggerInitiator INSTANCE = new SqlStatementLoggerInitiator();
@Override
public SqlStatementLogger initiateService(Map<String, Object> configValues, ServiceRegistryImplementor registry) {
final boolean showSQL = ConfigurationHelper.getBoolean( Environment.SHOW_SQL, configValues );
final boolean formatSQL = ConfigurationHelper.getBoolean( Environment.FORMAT_SQL, configValues );
final boolean highlightSQL = ConfigurationHelper.getBoolean( Environment.HIGHLIGHT_SQL, configValues );
final long logSlowQuery = ConfigurationHelper.getLong( Environment.LOG_SLOW_QUERY, configValues, 0 );
final boolean showSQL = getBoolean( SHOW_SQL, configValues );
final boolean formatSQL = getBoolean( FORMAT_SQL, configValues );
final boolean highlightSQL = getBoolean( HIGHLIGHT_SQL, configValues );
long logSlowQuery = getLong( LOG_SLOW_QUERY, configValues, -2 );
if ( logSlowQuery == -2 ) {
logSlowQuery = getLong( OLD_LOG_SLOW_QUERY, configValues, 0 );
}
return new SqlStatementLogger( showSQL, formatSQL, highlightSQL, logSlowQuery );
}