Включение ведения журнала запросов в режиме гибернации с помощью Java-кода

#java #spring #hibernate #spring-data-jpa #batch-processing

Вопрос:

Я хочу распечатать конкретный запрос на гибернацию в среде UAT. Однако я не хочу включать ведение журнала гибернации для всех запросов, так как это приведет к созданию огромных журналов. Есть ли способ включить ведение журнала запросов в режиме гибернации с помощью кода java непосредственно перед запросом, который я хочу распечатать, а затем немедленно отключить его? Пожалуйста, обратите внимание, что я использую репозиторий Spring data Jpa.

Ответ №1:

Это зависит от используемой библиотеки журналов.

Я думаю, что Spring использует SLF4J и logback, поэтому должно сработать что-то вроде следующего:

 LoggerContext loggerContext = (LoggerContext)LoggerFactory.getILoggerFactory();
loggerContext.getLogger("org.hibernate.SQL").setLevel(Level.DEBUG); 
 

а затем установить

 loggerContext.getLogger("org.hibernate.SQL").setLevel(Level.ERROR); 
 

Ответ №2:

Есть возможность выполнить индивидуальное ведение журнала с помощью logback, но не уверен, что это поможет регистрировать конкретные журналы SQL.

Воспользуйтесь этой ссылкой-https://docs.spring.io/spring-boot/docs/current/reference/html/howto.html#howto.logging

Комментарии:

1. Как я уже упоминал в вопросе, я не хочу делать это на уровне приложения. Я хочу сделать это программно только для определенного блока кода