web-dev-qa-db-ja.com

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には表示されません。ファイルには春からの基本的なログだけが含まれています。

ログファイルにSQLステートメントを表示するにはどうすればいいですか。

258
Oleg Pavliv

あなたのプロパティファイルでこれを使ってみてください。

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

これは標準出力にも有効です。

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

値を記録するには

spring.jpa.properties.hibernate.type=trace 

これをapplication.propertiesに追加するだけです。

158
v.ladynev

これは私にとってはうまくいきます(YAML):

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

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>
13
Edye Chan

使ってください:

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

ドキュメント によると:

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

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

これらのリンクを参照してください。

7
Javier Z.

クエリに使用された実際のパラメータを表示したい場合は、次のものを使用できます。

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]
3

YAMLへの翻訳済みの受け入れられた答えは私のために働く

logging:
  level:
    org:
      hibernate:
        SQL:
          TRACE
        type:
          descriptor:
            sql:
              BasicBinder:
                TRACE
2
Robert.Li

application.properties fileでこれらのいずれかを使用できます。

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_
2
Lova Chittumuri