Перевести журналы show-sql в Hibernate в формате log4j2

Я настроил 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:), чтобы использовать тот же шаблон, что и первые два журнала, которые используют следующую конфигурацию yaml для log4j2:

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
baeldung.com/sql-logging-spring-boot
antoine.lange 20.04.2024 17:53
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
1
1
83
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Хотя это чрезвычайно просто, не рекомендуется использовать spring.jpa.show-sql: true вне тестового сценария, поскольку он напрямую выгружает все на стандартный вывод без какой-либо оптимизации структуры журналирования.

Более того, он не записывает параметры подготовленных операторов.

Вам следует настроить логгеры в файле свойств:

Спящий режим 6:

logging.level.org.hibernate.SQL=DEBUG
logging.level.org.hibernate.orm.jdbc.bind=СЛЕД

Спящий режим 5:

logging.level.org.hibernate.SQL=ОТЛАДКА logging.level.org.hibernate.type.descriptor.sql=TRACE

В первой строке регистрируются SQL-запросы, а во второй — подготовленные параметры инструкции.

При установке этих свойств журналы будут отправляться в настроенное приложение.

Источник: https://vladmihalcea.com/the-best-way-to-log-jdbc-statements/

Другие вопросы по теме