From 30c90a9f7edb278d477b2b4f96e2ad17cc468950 Mon Sep 17 00:00:00 2001 From: Martin Panzer Date: Fri, 6 Mar 2020 21:50:02 +0100 Subject: [PATCH] Add logging of hibernate orm bind params "quarkus.hibernate-orm.log.bindparam" added for logging of bind parameters --- .../hibernate/orm/deployment/HibernateOrmConfig.java | 10 +++++++++- .../orm/deployment/HibernateOrmProcessor.java | 9 +++++++++ 2 files changed, 18 insertions(+), 1 deletion(-) diff --git a/extensions/hibernate-orm/deployment/src/main/java/io/quarkus/hibernate/orm/deployment/HibernateOrmConfig.java b/extensions/hibernate-orm/deployment/src/main/java/io/quarkus/hibernate/orm/deployment/HibernateOrmConfig.java index d232028661602..97cef720a5950 100644 --- a/extensions/hibernate-orm/deployment/src/main/java/io/quarkus/hibernate/orm/deployment/HibernateOrmConfig.java +++ b/extensions/hibernate-orm/deployment/src/main/java/io/quarkus/hibernate/orm/deployment/HibernateOrmConfig.java @@ -284,6 +284,14 @@ public static class HibernateOrmConfigLog { @ConfigItem(defaultValue = "false") public boolean sql; + /** + * Logs SQL bind parameter. + *

+ * Setting it to true is obviously not recommended in production. + */ + @ConfigItem(defaultValue = "false") + public boolean bindParam; + /** * Whether JDBC warnings should be collected and logged. */ @@ -291,7 +299,7 @@ public static class HibernateOrmConfigLog { public Optional jdbcWarnings; public boolean isAnyPropertySet() { - return sql || jdbcWarnings.isPresent(); + return sql || bindParam || jdbcWarnings.isPresent(); } } diff --git a/extensions/hibernate-orm/deployment/src/main/java/io/quarkus/hibernate/orm/deployment/HibernateOrmProcessor.java b/extensions/hibernate-orm/deployment/src/main/java/io/quarkus/hibernate/orm/deployment/HibernateOrmProcessor.java index 4a273307e3156..4d5b79cfbb368 100644 --- a/extensions/hibernate-orm/deployment/src/main/java/io/quarkus/hibernate/orm/deployment/HibernateOrmProcessor.java +++ b/extensions/hibernate-orm/deployment/src/main/java/io/quarkus/hibernate/orm/deployment/HibernateOrmProcessor.java @@ -50,6 +50,7 @@ import org.jboss.jandex.DotName; import org.jboss.jandex.IndexView; import org.jboss.jandex.Indexer; +import org.jboss.logmanager.Level; import io.quarkus.agroal.deployment.JdbcDataSourceBuildItem; import io.quarkus.agroal.deployment.JdbcDataSourceSchemaReadyBuildItem; @@ -71,6 +72,7 @@ import io.quarkus.deployment.builditem.GeneratedResourceBuildItem; import io.quarkus.deployment.builditem.HotDeploymentWatchedFileBuildItem; import io.quarkus.deployment.builditem.LaunchModeBuildItem; +import io.quarkus.deployment.builditem.LogCategoryBuildItem; import io.quarkus.deployment.builditem.SystemPropertyBuildItem; import io.quarkus.deployment.builditem.nativeimage.NativeImageResourceBuildItem; import io.quarkus.deployment.builditem.nativeimage.ReflectiveClassBuildItem; @@ -716,6 +718,13 @@ private void handleHibernateORMWithNoPersistenceXml( } } + @BuildStep + public void produceLoggingCategories(BuildProducer categories) { + if (hibernateConfig.log.bindParam) { + categories.produce(new LogCategoryBuildItem("org.hibernate.type.descriptor.sql.BasicBinder", Level.TRACE)); + } + } + private Optional guessDialect(Optional dbKind) { // For now select the latest dialect from the driver // later, we can keep doing that but also avoid DCE