Я использую hibernate 3 и хочу, чтобы он не сбрасывал все сообщения запуска в консоль. Я попытался закомментировать строки stdout в log4j.properties, но не повезло. Я вставил свой файл журнала ниже. Также я использую eclipse со стандартной структурой проекта и имею копию log4j.properties как в корне папки проекта, так и в папке bin.
### отправлять сообщения журнала на стандартный вывод ### # log4j.appender.stdout = org.apache.log4j.ConsoleAppender # log4j.appender.stdout.Target = System.out # log4j.appender.stdout.layout = org.apache.log4j.PatternLayout # log4j.appender.stdout.layout.ConversionPattern =% d {ABSOLUTE}% 5p% c {1}:% L -% m% n ### прямые сообщения в файл hibernate.log ### log4j.appender.file = org.apache.log4j.FileAppender log4j.appender.file.File = hibernate.log log4j.appender.file.layout = org.apache.log4j.PatternLayout log4j.appender.file.layout.ConversionPattern =% d {ABSOLUTE}% 5p% c {1}:% L -% m% n ### установить уровни журнала - для более подробного ведения журнала измените 'info' на 'debug' ### log4j.rootLogger = предупреждение, стандартный вывод # log4j.logger.org.hibernate = info log4j.logger.org.hibernate = отладка ### журнал активности парсера запросов HQL # log4j.logger.org.hibernate.hql.ast.AST = отладка ### регистрировать только SQL # log4j.logger.org.hibernate.SQL = отладка ### журнал параметров привязки JDBC ### log4j.logger.org.hibernate.type = информация # log4j.logger.org.hibernate.type = отладка ### экспорт / обновление схемы журнала ### log4j.logger.org.hibernate.tool.hbm2ddl = отладка ### журнал деревьев синтаксического анализа HQL # log4j.logger.org.hibernate.hql = отладка ### активность кеша журнала ### # log4j.logger.org.hibernate.cache = отладка ### журнал транзакций # log4j.logger.org.hibernate.transaction = отладка ### журнал получения ресурсов JDBC # log4j.logger.org.hibernate.jdbc = отладка ### включите следующую строку, если хотите отслеживать соединение ### ### утечки при использовании DriverManagerConnectionProvider ### # log4j.logger.org.hibernate.connection.DriverManagerConnectionProvider = trac5
Ответы:
Попробуйте установить более разумный уровень ведения журнала. Установка уровня ведения журнала на
info
означает, что в журнал регистрируются только события журналаinfo
или более высокого уровня (warn
,error
иfatal
), то естьdebug
события журнала игнорируются.или в XML-версии конфигурационного файла log4j:
<logger name="org.hibernate"> <level value="info"/> </logger>
См. Также руководство по log4j .
источник
System.out.println()
вызовов.Важное примечание: свойство (часть конфигурации гибернации, НЕ часть конфигурации платформы ведения журнала!)
контролирует ведение журнала непосредственно в STDOUT, минуя любую структуру ведения журнала (которую можно распознать по отсутствующему форматированию вывода сообщений). Если вы используете фреймворк журналирования, такой как log4j, вы всегда должны устанавливать для этого свойства значение false, потому что это не дает вам никаких преимуществ.
Это обстоятельство раздражало меня довольно долгое время, потому что меня это особо не волновало, пока я не попытался написать какой-нибудь тест для Hibernate.
источник
hibernate.xml
конфигурации Hibernate (т.е. ), в отличие от моей конфигурации ведения журнала. Спасибо за указатель!Выполнение:
java.util.logging.Logger.getLogger("org.hibernate").setLevel(Level.OFF);
до того, как у меня сработала инициализация гибернации.
Примечание: строка выше отключит каждый выход (
Level.OFF
). Если вы хотите быть менее строгим, вы можете использоватьjava.util.logging.Logger.getLogger("org.hibernate").setLevel(Level.SEVERE);
это достаточно тихо. (Или проверьте
java.util.logging.Level
класс, чтобы узнать больше уровней).источник
java.util.logging.Logger.getLogger("org.hibernate").setLevel(Level.SEVERE);
Вы можете отключить многие выходы спящего режима, установив этот реквизит спящего режима (конфигурация hb) как false:
Но если вы хотите отключить всю консольную информацию, вы должны установить уровень логгера НЕТ из FATAL класса,
org.hibernate
как говорит Юха.источник
Я, наконец, понял, это потому, что Hibernate теперь использует фасад журнала slf4j, чтобы связать с log4j, вам нужно поместить jar-файлы log4j и slf4j-log4j12 в вашу библиотеку, а затем свойства log4j возьмут на себя управление журналами Hibernate.
Моя настройка pom.xml выглядит следующим образом:
<dependency> <groupId>log4j</groupId> <artifactId>log4j</artifactId> <version>1.2.16</version> </dependency> <dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-log4j12</artifactId> <version>1.6.4</version> </dependency>
источник
-Dorg.jboss.logging.provider=slf4j
к своим параметрам виртуальной машины. Я написал статью на эту тему: medium.com/@scadge/how-to-enable-hibernate-logging-dc11545efd3dДля отключения
Hibernate:select
сообщения в журнале можно установить свойство вHibernateJpaVendorAdapter
:<bean id="jpaVendorAdapter" class="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter"> <property name="showSql" value="false"/> </bean>
источник
Для тех, кому не нужны элегантные решения, просто быстрый и грязный способ остановить эти сообщения, вот решение, которое сработало для меня (я использую Hibernate 4.3.6 и Eclipse, и никаких ответов, приведенных выше (или найденных в Интернете) работал; ни файлы конфигурации log4j, ни программная установка уровня ведения журнала)
public static void main(String[] args) { //magical - do not touch @SuppressWarnings("unused") org.jboss.logging.Logger logger = org.jboss.logging.Logger.getLogger("org.hibernate"); java.util.logging.Logger.getLogger("org.hibernate").setLevel(java.util.logging.Level.WARNING); //or whatever level you need ... }
Я использовал его в учебной программе, скачанной с этого сайта
источник
Первое, что нужно сделать, - это выяснить, какая среда ведения журнала используется на самом деле.
Многие фреймворки уже описаны другими авторами выше. Если вы используете Logback, вы можете решить проблему, добавив этот logback.xml в свой путь к классам:
<?xml version="1.0" encoding="UTF-8"?> <configuration> <logger name="org.hibernate" level="WARN"/> </configuration>
Дополнительная информация: Ручная настройка входа в систему
источник
Я изменил «отладку» на «информацию», и это сработало. Вот что я сделал:
До:
После:
источник
Замените slf4j-jdk14-xxx.jar на slf4j-log4j12-xxx.jar. Если у вас есть оба, удалите slf4j-jdk14-xxx.jar. Нашел это решение на https://forum.hibernate.org/viewtopic.php?f=1&t=999623
источник
log4j.properties
конфигурацию;log4j.logger.org.hibernate=OFF
Чтобы избавиться от вывода логгера в консоль, попробуйте это.
Эти операторы отключили все выходы консоли из регистратора.
источник
Существует несколько частей ведения журнала гибернации, которыми вы можете управлять на основе иерархии регистраторов пакета гибернации (подробнее об иерархии регистраторов здесь ).
<!-- Log everything in hibernate --> <Logger name="org.hibernate" level="info" additivity="false"> <AppenderRef ref="Console" /> </Logger> <!-- Log SQL statements --> <Logger name="org.hibernate.SQL" level="debug" additivity="false"> <AppenderRef ref="Console" /> <AppenderRef ref="File" /> </Logger> <!-- Log JDBC bind parameters --> <Logger name="org.hibernate.type.descriptor.sql" level="trace" additivity="false"> <AppenderRef ref="Console" /> <AppenderRef ref="File" /> </Logger>
Вышесказанное было взято отсюда .
Кроме того, это свойство может быть указано
show-sql:true
в файле конфигурации, поскольку оно заменяет параметры среды ведения журнала. Подробнее об этом здесь .источник
Мне удалось остановиться, добавив эти 2 строки
Вот как выглядит мой log4j.properties , я просто оставляю несколько прокомментированных строк, объясняющих уровень журнала
# Root logger option #Level/rules TRACE < DEBUG < INFO < WARN < ERROR < FATAL. #FATAL: shows messages at a FATAL level only #ERROR: Shows messages classified as ERROR and FATAL #WARNING: Shows messages classified as WARNING, ERROR, and FATAL #INFO: Shows messages classified as INFO, WARNING, ERROR, and FATAL #DEBUG: Shows messages classified as DEBUG, INFO, WARNING, ERROR, and FATAL #TRACE : Shows messages classified as TRACE,DEBUG, INFO, WARNING, ERROR, and FATAL #ALL : Shows messages classified as TRACE,DEBUG, INFO, WARNING, ERROR, and FATAL #OFF : No log messages display log4j.rootLogger=INFO, file, console log4j.logger.main=DEBUG log4j.logger.org.hibernate.orm.deprecation=error log4j.logger.org.hibernate=error ####################################### # Direct log messages to a log file log4j.appender.file.Threshold=ALL log4j.appender.file.file=logs/MyProgram.log log4j.appender.file.layout=org.apache.log4j.PatternLayout log4j.appender.file.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss,SSS} %-5p %c{1} - %m%n # set file size limit log4j.appender.file=org.apache.log4j.RollingFileAppender log4j.appender.file.MaxFileSize=5MB log4j.appender.file.MaxBackupIndex=50 ############################################# # Direct log messages to System Out log4j.appender.console.Threshold=INFO log4j.appender.console.Target=System.out log4j.appender.console=org.apache.log4j.ConsoleAppender log4j.appender.console.layout=org.apache.log4j.PatternLayout log4j.appender.console.layout.ConversionPattern=%d{HH:mm:ss} %-5p %c{1} - %m%n
источник