Spring Boot에서 SQL 문을 기록하는 방법
SQL sql sql sql sql 。
.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
응용 프로그램을 실행할 때
cmd>mvn spring-boot:run
콘솔에서 sql 문을 볼 수 있지만 app.log 파일에는 표시되지 않습니다.이 파일에는 스프링의 기본 로그만 포함되어 있습니다.
로그 파일에서 sql 문을 보려면 어떻게 해야 합니까?
속성 파일에서 다음을 사용해 보십시오.
logging.level.org.hibernate.SQL=DEBUG
logging.level.org.hibernate.type.descriptor.sql.BasicBinder=TRACE
이것은 stdout에도 유효합니다.
spring.jpa.properties.hibernate.show_sql=true
spring.jpa.properties.hibernate.use_sql_comments=true
spring.jpa.properties.hibernate.format_sql=true
값을 기록하려면:
logging.level.org.hibernate.type=trace
그냥 '아까'에 돼요.application.properties
.
이 방법은 유효합니다(YAML).
spring:
jpa:
properties:
hibernate:
show_sql: true
format_sql: true
logging:
level:
org:
hibernate:
type: trace
피해야 할 설정
다음의 설정은 사용하지 말아 주세요.
spring.jpa.show-sql=true
show-sql
SQL 문이 콘솔에 인쇄되므로 보통 로깅 프레임워크에서처럼 필터링할 수 없습니다.
휴지 상태 로깅 사용
로그 컨피규레이션파일에서 다음 로거를 추가할 경우:
<logger name="org.hibernate.SQL" level="debug"/>
는 의 의 「」, 「」 「」 「JDBC」 「JDBC」 「JDBC」 「JDBC」 「JDBC」 「JDBC」 「JDBC」 「JDBC」 。PreparedStatement
플레이스홀더를 됩니다.따라서 다음 파라미터 자리 표시자를 사용하여 문이 기록됩니다.
INSERT INTO post (title, version, id) VALUES (?, ?, ?)
bind 파라미터 값을 로깅하려면 다음 로거도 추가합니다.
<logger name="org.hibernate.type.descriptor.sql.BasicBinder" level="trace"/>
[ ] 를 BasicBinder
에 기록됩니다.bind bind bind 파 、 bind 파 、 bind parameter logger 。
DEBUG [main]: o.h.SQL - insert into post (title, version, id) values (?, ?, ?)
TRACE [main]: o.h.t.d.s.BasicBinder - binding parameter [1] as [VARCHAR] - [High-Performance Java Persistence, part 1]
TRACE [main]: o.h.t.d.s.BasicBinder - binding parameter [2] as [INTEGER] - [0]
TRACE [main]: o.h.t.d.s.BasicBinder - binding parameter [3] as [BIGINT] - [1]
데이터 소스 프록시 사용
데이터 소스 프록시 OSS 프레임워크에서는 실제 JDBC를 프록시할 수 있습니다.DataSource
에서 알 수 있듯이
할 수 .dataSource
다음과 같이 하이버네이트에 사용되는 콩:
@Bean
public DataSource dataSource(DataSource actualDataSource) {
SLF4JQueryLoggingListener loggingListener = new SLF4JQueryLoggingListener();
loggingListener.setQueryLogEntryCreator(new InlineQueryLogEntryCreator());
return ProxyDataSourceBuilder
.create(actualDataSource)
.name(DATA_SOURCE_PROXY_NAME)
.listener(loggingListener)
.build();
}
해 주세요.actualDataSource
이여야 합니다.DataSource
응용 프로그램에서 사용하는 [연결 풀][2]에 의해 정의됩니다.
다음, '보다 낫다'를 해야 합니다.net.ttddyy.dsproxy.listener
에서 「」로debug
로그 프레임워크 컨피규레이션파일로 설정합니다.예를 들어 Logback을 사용하는 경우 다음 로거를 추가할 수 있습니다.
<logger name="net.ttddyy.dsproxy.listener" level="debug"/>
「」를 유효하게 ,datasource-proxy
SQL 음 sql sql sql sql sql sql sql 。
Name:DATA_SOURCE_PROXY, Time:6, Success:True,
Type:Prepared, Batch:True, QuerySize:1, BatchSize:3,
Query:["insert into post (title, version, id) values (?, ?, ?)"],
Params:[(Post no. 0, 0, 0), (Post no. 1, 0, 1), (Post no. 2, 0, 2)]
사용방법:
logging.level.org.hibernate.SQL=DEBUG
logging.level.org.hibernate.type=TRACE
spring.jpa.show-sql=true
「 」가 logback-spring.xml
.
<logger name="org.hibernate.SQL" level="trace" additivity="false">
<appender-ref ref="file" />
</logger>
저는 좋아요.
바인드 변수도 가져오려면 다음 절차를 수행합니다.
<logger name="org.hibernate.type.descriptor.sql" level="trace">
<appender-ref ref="file" />
</logger>
MS-SQL 서버 드라이버(Microsoft SQL Server JDBC 드라이버)의 경우.
사용방법:
logging.level.com.microsoft.sqlserver.jdbc=debug
application.properties 파일에 저장됩니다.
개인 취향은 다음과 같습니다.
logging.level.com.microsoft.sqlserver.jdbc=info
logging.level.com.microsoft.sqlserver.jdbc.internals=debug
다음 링크를 참조할 수 있습니다.
- https://msdn.microsoft.com/en-us/library/ms378517(v=sql.110).aspx
- https://docs.spring.io/spring-boot/docs/current/reference/html/howto-logging.html
YAML에 대한 번역된 답변이 유효합니다.
logging:
level:
org:
hibernate:
SQL:
TRACE
type:
descriptor:
sql:
BasicBinder:
TRACE
설명서에 따르면 다음과 같습니다.
spring.jpa.show-sql=true # Enable logging of SQL statements.
표준 출력에 로그인
§에 application.properties
### to enable
spring.jpa.show-sql=true
### to make the printing SQL beautify
spring.jpa.properties.hibernate.format_sql=true
이것은 SQL 쿼리를 인쇄하는 가장 간단한 방법이지만 준비된 문의 매개 변수를 기록하지는 않습니다.또한 최적화된 로깅 프레임워크가 아니기 때문에 권장하지 않습니다.
로깅 프레임워크 사용
§에 application.properties
### logs the SQL queries
logging.level.org.hibernate.SQL=DEBUG
### logs the prepared statement parameters
logging.level.org.hibernate.type.descriptor.sql.BasicBinder=TRACE
### to make the printing SQL beautify
spring.jpa.properties.hibernate.format_sql=true
위의 속성을 지정하면 로그 엔트리가 log-back 또는 log4j 등의 설정된 로그어펜더로 전송됩니다.
질의에 사용된 실제 매개 변수를 보려면 다음을 사용할 수 있습니다.
logging.level.org.hibernate.SQL=DEBUG
logging.level.org.hibernate.type.descriptor.sql=TRACE
다음 실제 은 '하다'로 됩니다.binding parameter......
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]
application.properties 파일에서 다음 중 하나를 사용할 수 있습니다.
spring.jpa.show-sql=true
example :
//Hibernate: select country0_.id as id1_0_, country0_.name as name2_0_ from country country0_
또는
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_
application.properties 파일에서 다음 코드를 사용합니다.
#Enable logging for config troubeshooting
logging.level.org.hibernate.SQL=DEBUG
logging.level.com.zaxxer.hikari.HikariConfig=DEBUG
logging.level.org.hibernate.type.descriptor.sql.BasicBinder=TRACE
stdout SQL 쿼리에 대해 application.properties에 다음 행을 추가할 수 있습니다.
spring.jpa.properties.hibernate.show_sql=true
이 설정에 문제가 있어 때로는 동작하지 않는 것처럼 보이는 경우는, 유닛 테스트중에 동작하지 않는 시간을 고려해 주십시오.
이 커스텀 타임 합니다.@TestPropertySources
주석은 테스트 상속 계층 내 어딘가에 선언되었습니다. 이, 에, 에, 에, 에, 에, 에, this, this, this, this, this, this, this, this, this, this, this, this, this, this, this, 에 넣는application.properties
또는 다른 프로덕션 속성 설정을 사용하여 설정 중인 값이 테스트 시 사실상 무시됩니다.
「 」를 .spring.jpa.properties.hibernate.show_sql=true
항상 되지는 .application.properties가 도움이 되지 않았습니다.
도 한 번 써보세요.properties.put("hibernate.show_sql", "true");
데이터베이스 구성 속성으로 이동합니다.
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();
}
요.spring.jpa.show-sql=true
예를 들어 application.properties에서는 https://github.com/007anwar/ConfigServerRepo/blob/master/application.yaml 를 참조할 수 있습니다.
은 다음과 행을 입니다.application.properties
이렇게 하면 실행되는 모든 SQL 쿼리를 기록할 수 있습니다.
spring.jpa.show-sql=true
spring.jpa.properties.hibernate.format_sql=true
두 번째 줄은 SQL 문을 아름답게 하기 위해 사용됩니다.
로거를 사용하는 경우는, 다음의 회선을 사용할 수 있습니다.
logging.level.org.hibernate.SQL=DEBUG
logging.level.org.hibernate.type.descriptor.sql.BasicBinder=TRACE
두 번째 줄은 쿼리에 바인딩된 모든 매개 변수를 인쇄하는 데 사용됩니다.이게 너한테 효과가 있길 바라.더 궁금하신 점이 있으시면 연락주세요!
내 말:
logging:
level:
org.hibernate.SQL: DEBUG
org.hibernate.type.descriptor.sql: TRACE
스프링 부트 버전: 2.3.5풀어주다
속성에 추가합니다.Hibernate Show SQL 인용:
#show sql statement
logging.level.org.hibernate.SQL=debug
#show sql values
logging.level.org.hibernate.type.descriptor.sql=trace
사용하는 JdbcTemplate에 합니다.application.properties
sql 및 파라미터 값을 로그에 기록합니다.
logging.level.org.springframework.jdbc.core.JdbcTemplate=DEBUG
logging.level.org.springframework.jdbc.core.StatementCreatorUtils=TRACE
언급URL : https://stackoverflow.com/questions/30118683/how-to-log-sql-statements-in-spring-boot
'programing' 카테고리의 다른 글
C의 파일 범위에서 가변적으로 변경된 어레이 (0) | 2022.07.07 |
---|---|
vue 라우터로 소품으로 오브젝트를 건네주는 방법 (0) | 2022.07.07 |
epoll의 에지 트리거링 옵션의 용도는 무엇입니까? (0) | 2022.07.07 |
계산된 vue에서 화살표 사용 기능이 작동하지 않음 (0) | 2022.07.07 |
Java에서 List를 int[]로 변환하려면 어떻게 해야 합니까? (0) | 2022.07.07 |