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


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

11 ответов:

попробуйте установить более разумный уровень ведения журнала. Установка уровня ведения журнала в info означает, что только событие журнала в info или более высокий уровень (warn,error и fatal) регистрируются, то есть debug события регистрации игнорируются.

log4j.logger.org.hibernate=info

или версия XML из файла конфигурации log4j:

<logger name="org.hibernate">
  <level value="info"/> 
</logger>

см. также инструкция к log4j.

важное замечание: свойство (часть конфигурации hibernate, а не часть конфигурации logging framework!)

hibernate.show_sql

контролирует ведение журнала напрямую для STDOUT в обход любой структуры ведения журнала (которую вы можете распознать по отсутствующему выходному форматированию сообщений). Если вы используете структуру ведения журнала, например log4j,вы должны всегда установите для этого свойства значение false потому что это дает вам никакой пользы.

что обстоятельства раздражали меня довольно долго, потому что я никогда не заботился об этом, пока не попытался написать какой-то тест в отношении Hibernate.

исполнитель:

java.util.logging.Logger.getLogger("org.hibernate").setLevel(Level.OFF);

до инициализации hibernate работал для меня.


Примечание: линия выше превратится выход из системы (Level.OFF). Если вы хотите быть менее строгим, вы можете использовать

java.util.logging.Logger.getLogger("org.hibernate").setLevel(Level.SEVERE);

это достаточно тихо. (Или проверьте java.util.logging.Level класс для большего количества уровней).

вы можете отключить многие выходы hibernate, установив этот реквизит hibernate (конфигурация hb) false:

hibernate.show_sql
hibernate.generate_statistics
hibernate.use_sql_comments

но если вы хотите отключить всю информацию о консоли, вы должны установить уровень регистратора A NONE of FATAL of class org.hibernate Как сказал Юха.

Я наконец понял, это потому, что Hibernate использует slf4j log facade теперь, чтобы перейти к log4j, вам нужно поместить log4j и slf4j-log4j12 jars в вашу lib, а затем Свойства log4j возьмут под контроль Hibernate logs.

мой пом.настройка 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>

для отключения 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

    ...
}

я использовал его в обучающей программе, загруженной из этот сайт

чтобы избавиться от выхода регистратора в консоли, попробуйте это.

ch.qos.logback.classic.LoggerContext.LoggerContext loggerContext = (LoggerContext) org.slf4j.LoggerFactory.LoggerFactory.getILoggerFactory();

loggerContext.stop();

эти операторы отключили все консольные выходы из logger.

первое, что нужно сделать, это выяснить, какой фреймворк логирования используется.

многие фреймворки уже рассмотрены другими авторами выше. В случае, если вы используете Logback вы можете решить эту проблему, добавив Это logback.xml к вашему classpath:

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <logger name="org.hibernate" level="WARN"/>
</configuration>

дополнительная информация: Logback Manual-Configuration

Я изменил " debug "на" info", и это сработало. Вот что я сделал:

перед:

log4j.rootLogger=debug, stdout, R

после:

log4j.rootLogger=info, stdout, R 

заменить slf4j-jdk14-xxx.jar с помощью slf4j-log4j12-xxx.jar. Если у вас есть оба, удалите slf4j-jdk14-xxx.jar. Нашел это решение в https://forum.hibernate.org/viewtopic.php?f=1&t=999623