Выключение вывода консоли управления спящего режима

Я использую 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