Выключение вывода консоли управления спящего режима
Я использую hibernate 3 и хочу, чтобы он не сбрасывал все сообщения запуска на консоль. Я пробовал комментировать строки stdout в log4j.properties, но не повезло. Я вставил свой файл журнала ниже. Также я использую eclipse со стандартной структурой проекта и имею копию log4j.properties как в корне папки проекта, так и в папке bin.
### direct log messages to stdout ###
#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
### direct messages to file 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
### set log levels - for more verbose logging change 'info' to 'debug' ###
log4j.rootLogger=warn, stdout
#log4j.logger.org.hibernate=info
log4j.logger.org.hibernate=debug
### log HQL query parser activity
#log4j.logger.org.hibernate.hql.ast.AST=debug
### log just the SQL
#log4j.logger.org.hibernate.SQL=debug
### log JDBC bind parameters ###
log4j.logger.org.hibernate.type=info
#log4j.logger.org.hibernate.type=debug
### log schema export/update ###
log4j.logger.org.hibernate.tool.hbm2ddl=debug
### log HQL parse trees
#log4j.logger.org.hibernate.hql=debug
### log cache activity ###
#log4j.logger.org.hibernate.cache=debug
### log transaction activity
#log4j.logger.org.hibernate.transaction=debug
### log JDBC resource acquisition
#log4j.logger.org.hibernate.jdbc=debug
### enable the following line if you want to track down connection ###
### leakages when using DriverManagerConnectionProvider ###
#log4j.logger.org.hibernate.connection.DriverManagerConnectionProvider=trac5
Ответы
Ответ 1
Попробуйте установить более разумный уровень ведения журнала. Установка уровня ведения журнала на info
означает, что регистрируется только событие журнала на info
или более высоком уровне (warn
, error
и fatal
), то есть debug
события регистрации игнорируются.
log4j.logger.org.hibernate=info
или XML-версия файла конфигурации log4j:
<logger name="org.hibernate">
<level value="info"/>
</logger>
См. также log4j manual.
Ответ 2
Важное замечание: свойство (часть конфигурации спящего режима, НЕ является частью конфигурации logging framework!)
hibernate.show_sql
управляет ведением журнала непосредственно в STDOUT, минуя любую структуру ведения журнала (которую вы можете распознать по отсутствующему форматированию вывода сообщений). Если вы используете структуру ведения журнала, такую как log4j, , вы всегда должны устанавливать это свойство как false, потому что оно не дает вам никакой пользы.
Это обстоятельство раздражало меня довольно долго, потому что я никогда не заботился об этом, пока не попытался написать некоторый ориентир относительно спящего режима.
Ответ 3
Выполнение:
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
для большего количества уровней).
Ответ 4
Вы можете отключить многие из выходов hibernate, чтобы настроить этот реквизит спящего режима (конфигурация hb) на false:
hibernate.show_sql
hibernate.generate_statistics
hibernate.use_sql_comments
Но если вы хотите отключить всю информацию о консоли, вы должны установить уровень регистратора: NONE of FATAL класса org.hibernate
, как говорят Juha.
Ответ 5
Я, наконец, понял, потому что Hibernate теперь использует фасад llf4j, чтобы подключиться к log4j, вам нужно добавить баны 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>
Ответ 6
Чтобы отключить сообщение Hibernate:select
в журнале, можно установить свойство в HibernateJpaVendorAdapter
:
<bean id="jpaVendorAdapter"
class="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter">
<property name="showSql" value="false"/>
</bean>
Ответ 7
Для тех, кто не хочет изящных решений, просто быстрый и грязный способ остановить эти сообщения, вот решение, которое сработало для меня (я использую 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
...
}
Я использовал его в учебной программе, загруженной из этого сайта
Ответ 8
Чтобы избавиться от вывода журнала в консоли, попробуйте это.
ch.qos.logback.classic.LoggerContext.LoggerContext loggerContext = (LoggerContext) org.slf4j.LoggerFactory.LoggerFactory.getILoggerFactory();
loggerContext.stop();
Эти инструкции отключили все выходы консоли из регистратора.
Ответ 9
Я изменил "debug" на "info", и он сработал. Вот что я сделал:
До:
log4j.rootLogger=debug, stdout, R
После:
log4j.rootLogger=info, stdout, R
Ответ 10
Замените slf4j-jdk14-xxx.jar на slf4j-log4j12-xxx.jar. Если у вас есть оба, удалите slf4j-jdk14-xxx.jar. Нашел это решение в https://forum.hibernate.org/viewtopic.php?f=1&t=999623