Отключение вывода консоли входа в спящий режим - PullRequest
73 голосов
/ 22 ноября 2008

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

72 голосов
/ 10 апреля 2014

Важное замечание: свойство (часть конфигурации гибернации, НЕ часть конфигурации каркаса ведения журнала!)

hibernate.show_sql

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

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

69 голосов
/ 22 ноября 2008

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

log4j.logger.org.hibernate=info

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

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

См. Также log4j руководство .

27 голосов
/ 20 августа 2013

Выполнение:

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, чтобы узнать больше уровней).

16 голосов
/ 28 ноября 2008

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

hibernate.show_sql
hibernate.generate_statistics
hibernate.use_sql_comments

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

7 голосов
/ 10 мая 2012

Я наконец-то понял, это потому, что Hibernate теперь использует фасад журнала slf4j, чтобы соединиться с 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>
4 голосов
/ 03 мая 2013

Для отключения сообщения Hibernate:select в журнале можно установить свойство в HibernateJpaVendorAdapter:

<bean id="jpaVendorAdapter"
    class="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter">
    <property name="showSql" value="false"/>
</bean> 
2 голосов
/ 16 августа 2018

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

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

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

Дополнительная информация: Ручная настройка при входе в систему

2 голосов
/ 10 сентября 2014

Для тех, кто не хочет элегантных решений, просто быстрый и грязный способ остановить эти сообщения, вот решение, которое сработало для меня (я использую 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

    ...
}

Я использовал его в учебной программе, скачанной с с этого сайта

1 голос
/ 11 декабря 2015

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

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

loggerContext.stop();

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

1 голос
/ 23 сентября 2015

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...