Spring Boot에서 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에는 표시되지 않습니다.이 파일에는 Spring의 기본 로그만 포함되어 있습니다.
로그 파일에서 SQL 문을 보려면 어떻게 해야 합니까?
속성 파일에서 다음을 사용해 보십시오.
logging.level.org.hibernate.SQL=DEBUG
logging.level.org.hibernate.type.descriptor.sql.BasicBinder=TRACE
이것은 표준 출력에도 유효합니다.
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-sqlSQL 문이 콘솔에 인쇄되므로 보통 로깅 프레임워크에서처럼 필터링할 수 없습니다.
휴지 상태 로깅 사용
로그 컨피규레이션파일에서 다음 로거를 추가할 경우:
<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응용 프로그램에서 사용하는 연결 풀에 의해 정의됩니다.
다음, '보다 낫다'를 해야 합니다.net.ttddyy.dsproxy.listener에서 「」로debug로그 프레임워크 컨피규레이션파일로 설정합니다.예를 들어 Logback을 사용하는 경우 다음 로거를 추가할 수 있습니다.
<logger name="net.ttddyy.dsproxy.listener" level="debug"/>
「」를 유효하게 ,datasource-proxySQL 음 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>
SQL Server 드라이버(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
다음 링크를 참조할 수 있습니다.
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
위의 속성을 지정하면 로그 엔트리가 로그백이나 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]
Spring boot에서는 SQL 문을 기록할 수 있습니다.1: using logger 2: standard access
logger의 경우 다음 행을 application.properties 파일에 추가해야 합니다.
logging.level.org.hibernate.SQL=DEBUG
표준 접근법 application.properties 파일에 다음 행을 추가해야 합니다.
spring.jpa.show-sql=true
spring.jpa.properties.hibernate.format_sql=true
application.properties 파일에서 다음 중 하나를 사용할 수 있습니다.
spring.jpa.show-sql=true
예:
//Hibernate: select country0_.id as id1_0_, country0_.name as name2_0_ from country country0_
또는
logging.level.org.hibernate.SQL=debug
예:
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_
휴지 상태 6의 경우:
spring.jpa.properties.hibernate.show_sql=true
logging.level.org.hibernate.orm.jdbc.bind = trace
stdout SQL 쿼리에 대해 application.properties에 다음 행을 추가할 수 있습니다.
spring.jpa.properties.hibernate.show_sql=true
application.properties 파일에서 다음 코드를 사용합니다.
# Enable logging for configuration troubleshooting
logging.level.org.hibernate.SQL=DEBUG
logging.level.com.zaxxer.hikari.HikariConfig=DEBUG
logging.level.org.hibernate.type.descriptor.sql.BasicBinder=TRACE
이 설정에 문제가 있어 때로는 동작하지 않는 것처럼 보이는 경우는, 유닛 테스트중에 동작하지 않는 시간을 고려해 주십시오.
이 커스텀 타임 합니다.@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=trueapplication.properties로 설정합니다.
예를 들어 ConfigServerRepo/application.yaml을 참조할 수 있습니다.
YAML 파일에서:
logging:
level:
org.hibernate.SQL: DEBUG
org.hibernate.type.descriptor.sql: TRACE
스프링 부트 버전: 2.3.5풀어주다
은 다음과 행을 입니다.application.properties「Spring Boot」SQL 「Spring Boot」를 선택합니다.
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
두 번째 줄은 쿼리에 바인딩된 모든 매개 변수를 인쇄하는 데 사용됩니다.
속성에 추가합니다.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.propertiesSQL 및 파라미터 값을 로그에 기록합니다.
logging.level.org.springframework.jdbc.core.JdbcTemplate=DEBUG
logging.level.org.springframework.jdbc.core.StatementCreatorUtils=TRACE
언급URL : https://stackoverflow.com/questions/30118683/how-can-i-log-sql-statements-in-spring-boot
'programing' 카테고리의 다른 글
| SQL Developer에 새 연결을 추가할 때 Oracle TNS 이름이 표시되지 않음 (0) | 2023.03.16 |
|---|---|
| WooCommerce 3에서 제품 판매 가격을 프로그래밍 방식으로 설정 (0) | 2023.03.16 |
| 워드프레스.wp_nav_menu에서 메뉴 항목 수동 추가 (0) | 2023.03.16 |
| 'System' 메서드로 시도합니다.Web. 도우미.Json..cctor()를 사용하여 메서드 'System'에 액세스합니다.Web. 도우미.Json.CreateSerializer()가 실패했습니다. (0) | 2023.03.16 |
| ref='string'은 왜 "disclosed"입니까? (0) | 2023.03.16 |
