我已配置
spring.jpa.show-sql: true
所以控制台日志看起来像这样:
2024-04-20 16:02:01.031 | http-nio-9001-exec-1 | INFO | org.springframework.web.servlet.DispatcherServlet | | Initializing Servlet 'dispatcherServlet'
2024-04-20 16:02:01.032 | http-nio-9001-exec-1 | INFO | org.springframework.web.servlet.DispatcherServlet | | Completed initialization in 1 ms
Hibernate:
select
nextval('id_account_seq')
Hibernate:
select
nextval('id_passenger_seq')
Hibernate:
insert
into
account
(creation_date, date_of_birth, email, first_name, last_name, fk_nationality, phone_number, id_account)
values
(?, ?, ?, ?, ?, ?, ?, ?)
Hibernate:
insert
into
passenger
(fk_account, date_of_birth, email, first_name, is_primary, last_name, fk_nationality, phone_number, id_passenger)
values
(?, ?, ?, ?, ?, ?, ?, ?, ?)
如何配置由
spring.jpa.show-sql: true
生成的日志(以 Hibernate:
开头的日志)以使用与前 2 个日志相同的模式,这两个日志对 log4j2 使用以下 yaml 配置:
Configuration:
status: warn
Appenders:
Console:
name: CONSOLE
target: SYSTEM_OUT
PatternLayout:
Pattern: "%d{yyyy-MM-dd HH:mm:ss.SSS} | %t | %-5level| %logger{25} | %mdc{id}{12} | %msg%n"
Loggers:
Root:
level: INFO
AppenderRef:
- ref: CONSOLE
虽然这非常简单,但不建议在测试场景之外使用
spring.jpa.show-sql: true
,因为它直接将所有内容卸载到标准输出,而不对日志框架进行任何优化。
此外,它不记录准备好的语句的参数。
您应该在属性文件中配置记录器:
logging.level.org.hibernate.SQL=DEBUG logging.level.org.hibernate.type.descriptor.sql.BasicBinder=TRACE
第一行记录 SQL 查询,第二条语句记录准备好的语句参数。
通过设置这些属性,日志将被发送到配置的appender。