аддитивность logback ложна, но журналы спящего режима sql создаются на консоли Tomcat

Как сгенерировать 2 лог-файла; Один будет регистрировать сообщения Hibernate sql, сгенерированные свойством show-sql = true. А другой будет регистрировать остальные журналы Hibernate.

Я настроил logback.xml, как показано ниже:

<logger name="org.hibernate" level="debug" additivity="false">
    <appender-ref ref="hibernate" />
</logger>

<logger name="org.hibernate.SQL" additivity="false">
    <appender-ref ref="hibernate-sql" />
</logger>

Он генерирует 2 файла журнала, как и ожидалось. Однако он дублирует сообщения журнала hibernate-sql в консоли Tomcat, приложении hibernate и приложении hibernate-sql.

Как я могу ограничить журнал для создания журналов Hibernate sql только в приложении hibernate-sql?


person Vikas Sharma    schedule 30.12.2012    source источник


Ответы (1)


Hibernate записывает сгенерированный SQL двумя разными и совершенно разными способами. Когда вы устанавливаете для свойства hibernate.show_sql значение true, он указывает Hibernate записывать сгенерированный SQL в стандартный вывод. Никакая структура ведения журнала в этом никак не участвует. Вот почему вы почти никогда не должны его использовать. Просто удалите это свойство из своей конфигурации, и SQL в консоли Tomcat исчезнет.

Второй способ, которым Hibernate записывает SQL, и способ, который вы должны использовать, заключается в том, что он отправляет его в структуру ведения журнала в категории ведения журнала org.hibernate.SQL. Он вообще не имеет отношения к hibernate.show_sql.

В качестве дополнительного лакомого кусочка, если вы не знаете, Hibernate также регистрирует все значения, связанные с параметрами подготовленных операторов, используя категорию org.hibernate.type. Это то, чего вы не можете получить с помощью hibernate.show_sql, поэтому использование ведения журнала Hibernate вместо show_sql является одновременно более гибким и информативным.

person Ryan Stewart    schedule 30.12.2012