spec for enableswagger2 apiparam java spring hibernate spring-boot logging

java - for - ¿Cómo registrar las declaraciones SQL en Spring Boot?



swagger for spring boot (12)

Esto funciona para mí (YAML):

spring: jpa: properties: hibernate: show_sql: true format_sql: true logging: level: org: hibernate: type: trace

Quiero registrar declaraciones SQL en un archivo.
Tengo las siguientes propiedades en application.properties

spring.datasource.url=... spring.datasource.username=user spring.datasource.password=1234 spring.datasource.driver-class-name=net.sourceforge.jtds.jdbc.Driver spring.jpa.show-sql=true spring.jpa.properties.hibernate.format_sql=true security.ignored=true security.basic.enabled=false logging.level.org.springframework.web=INFO logging.level.org.hibernate=INFO logging.file=c:/temp/my-log/app.log

Cuando ejecuto mi aplicación

cmd>mvn spring-boot:run

Puedo ver las instrucciones sql en la consola pero no aparecen en un archivo app.log. El archivo contiene solo registros básicos de spring.

¿Qué debo hacer para ver las instrucciones sql en el archivo de registro?


Esto también funciona para stdout:

spring.jpa.properties.hibernate.show_sql=true spring.jpa.properties.hibernate.use_sql_comments=true spring.jpa.properties.hibernate.format_sql=true

Para registrar valores:

spring.jpa.properties.hibernate.type=trace

Simplemente agregue esto a application.properties .


La respuesta aceptada traducida a YAML funciona para mí

logging.level.org.hibernate.SQL=DEBUG logging.level.org.hibernate.type.descriptor.sql=TRACE


Para el controlador del servidor MS-SQL (controlador JDBC de Microsoft SQL Server).

intente usar:

logging.level.com.microsoft.sqlserver.jdbc=debug

en su archivo application.properties.

Mi preferencia personal es establecer:

logging.level.com.microsoft.sqlserver.jdbc=info logging.level.com.microsoft.sqlserver.jdbc.internals=debug

Puede consultar estos enlaces como referencia:


Podemos usar cualquiera de estos en el archivo application.properties :

logging.level.org.hibernate.SQL=debug example : 2018-11-23 12:28:02.990 DEBUG 12972 --- [nio-8086-exec-2] org.hibernate.SQL : select country0_.id as id1_0_, country0_.name as name2_0_ from country country0_

o

logging: level: org: hibernate: SQL: TRACE type: descriptor: sql: BasicBinder: TRACE


Poner spring.jpa.properties.hibernate.show_sql=true en application.properties no siempre ayudó.

Puede intentar agregar properties.put("hibernate.show_sql", "true"); a las propiedades de la configuración de la base de datos.

public class DbConfig { @Primary @Bean(name = "entityManagerFactory") public LocalContainerEntityManagerFactoryBean entityManagerFactory( EntityManagerFactoryBuilder builder, @Qualifier("dataSource") DataSource dataSource ) { Map<String, Object> properties = new HashMap(); properties.put("hibernate.hbm2ddl.auto", "validate"); properties.put("hibernate.show_sql", "true"); return builder .dataSource(dataSource) .packages("com.test.dbsource.domain") .persistenceUnit("dbsource").properties(properties) .build(); }


Por favor use:

logging.level.org.hibernate.SQL=DEBUG logging.level.org.hibernate.type=TRACE spring.jpa.show-sql=true


Según la documentation es:

spring.jpa.show-sql=true # Enable logging of SQL statements.


Si desea ver los parámetros reales utilizados para consultar, puede usar

2018-08-07 14:14:36.079 DEBUG 44804 --- [ main] org.hibernate.SQL : select employee0_.id as id1_0_, employee0_.department as departme2_0_, employee0_.joining_date as joining_3_0_, employee0_.name as name4_0_ from employee employee0_ where employee0_.joining_date=? 2018-08-07 14:14:36.079 TRACE 44804 --- [ main] o.h.type.descriptor.sql.BasicBinder : binding parameter [1] as [TIMESTAMP] - [Tue Aug 07 00:00:00 SGT 2018]

Luego observe que el valor real del parámetro se muestra como binding parameter......

spring.jpa.show-sql=true example : //Hibernate: select country0_.id as id1_0_, country0_.name as name2_0_ from country country0_


Si tiene problemas con esta configuración y parece funcionar a veces y no en otras ocasiones, considere si los momentos en que no funciona son durante las pruebas unitarias.

Muchas personas declaran propiedades de tiempo de prueba personalizadas a través de la anotación @TestPropertySources declarada en algún lugar de la jerarquía de herencia de prueba. Esto anulará lo que haya puesto en su application.properties u otras configuraciones de propiedades de producción para que esos valores que está configurando se ignoren efectivamente en el momento del examen.


intente usar esto en su archivo de propiedades:

logging.level.org.hibernate.SQL=DEBUG logging.level.org.hibernate.type.descriptor.sql.BasicBinder=TRACE


si tiene un logback-spring.xml o algo así, agregue el siguiente código

<logger name="org.hibernate.SQL" level="trace" additivity="false"> <appender-ref ref="file" /> </logger>

funciona para mi.

Para obtener variables de enlace también:

<logger name="org.hibernate.type.descriptor.sql" level="trace"> <appender-ref ref="file" /> </logger>