Настройка категорий журналов гибернации в коде

#java #hibernate #log4j #log4j2

Вопрос:

Я пытаюсь настроить уровни журнала гибернации. Есть много примеров того, как настроить ведение журнала в xml-файлах или файлах свойств, но мне нужно сделать это в коде.

Это работает для одного класса:

 org.apache.log4j.BasicConfigurator.configure();
Logger l = Logger.getLogger(org.hibernate.internal.SessionFactoryImpl.class);
l.setLevel(Level.DEBUG);
 

Но я хочу установить уровень для целой категории, такой как «org.hibernate» или «org.hibernate.SQL». Нижеприведенное не работает.

 org.apache.log4j.BasicConfigurator.configure();
Logger l = Logger.getLogger("org.hibernate");
l.setLevel(Level.DEBUG);
 

ИЗМЕНИТЬ: Это, кажется, приемлемый обходной путь:

 org.apache.logging.log4j.core.LoggerContext context = (org.apache.logging.log4j.core.LoggerContext) org.apache.logging.log4j.LogManager.getContext(false);
org.apache.logging.log4j.core.config.Configuration configuration = context.getConfiguration();
org.apache.logging.log4j.core.config.LoggerConfig logger = configuration.getLoggerConfig("org.hibernate");
logger.setLevel(org.apache.logging.log4j.Level.DEBUG);
 

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

1. Есть ли какие-либо ошибки ? Переопределяется ли параметр вашего кода какой-либо другой конфигурацией из проекта ?