Wyłączanie wyjścia konsoli rejestrującej hibernate

Używam hibernate 3 i chcę go powstrzymać przed wrzucaniem wszystkich wiadomości startowych do konsoli. Próbowałem komentować linie stdout w log4j. properties, ale bez powodzenia. Wkleiłem mój plik dziennika poniżej. Również używam eclipse ze standardową strukturą projektu i mam kopię log4j. properties zarówno w katalogu głównym projektu, jak i w folderze 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
Author: Jared, 2008-11-22

11 answers

Spróbuj ustawić bardziej rozsądny poziom logowania. Ustawienie poziomu logowania na info oznacza, że tylko log event na info lub wyższym poziomie (warn, error i fatal) są rejestrowane, czyli debug zdarzenia rejestrujące są ignorowane.

log4j.logger.org.hibernate=info

Lub w wersji XML pliku konfiguracyjnego log4j:

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

Patrz również Instrukcja log4j .

 68
Author: Juha Syrjälä,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-05-24 21:27:27

Ważna uwaga: właściwość (część konfiguracji hibernate, Nie część logging framework config!)

hibernate.show_sql

Steruje logowaniem bezpośrednio do STDOUT, omijając dowolny framework logowania (który można rozpoznać po brakującym formatowaniu wyjściowym wiadomości). Jeśli używasz frameworka logowania, takiego jak log4j, powinieneś Zawsze ustawić tę właściwość na false , ponieważ nie daje to żadnych korzyści.

Ta okoliczność irytowała mnie dość długo. bo nigdy mnie to nie obchodziło, dopóki nie spróbowałem napisać jakiegoś benchmarka dotyczącego Hibernate.
 59
Author: user1050755,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-02-18 20:10:22

Wykonanie:

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

Zanim inicjalizacja hibernate zadziałała.


Uwaga: powyższa linia będzie wyłączać co (Level.OFF). Jeśli chcesz być mniej surowy, możesz użyć

java.util.logging.Logger.getLogger("org.hibernate").setLevel(Level.SEVERE);
To jest wystarczająco ciche. (Lub sprawdź klasę java.util.logging.Level, aby uzyskać więcej poziomów).
 26
Author: acdcjunior,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-08-19 22:05:07

Możesz wyłączyć wiele wyjść hibernate ustawiając tę właściwość hibernate (konfiguracja hb) false:

hibernate.show_sql
hibernate.generate_statistics
hibernate.use_sql_comments

Ale jeśli chcesz wyłączyć wszystkie informacje o konsoli musisz ustawić poziom loggera a NONE of FATAL of class org.hibernate Jak Juha say.

 16
Author: rresino,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-08-31 23:22:04

W końcu się zorientowałem, to dlatego, że Hibernate używa teraz loga slf4j, aby przejść do log4j, musisz umieścić log4j i slf4j-log4j12 słoiki do lib, a następnie Właściwości log4j przejmą kontrolę nad logami Hibernate.

Mój pom.ustawienie xml wygląda jak poniżej:
    <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>
 5
Author: Liqun Chen,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-05-10 15:54:26

W celu wyłączenia wiadomości Hibernate:select w dzienniku można ustawić właściwość HibernateJpaVendorAdapter:

<bean id="jpaVendorAdapter"
    class="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter">
    <property name="showSql" value="false"/>
</bean> 
 4
Author: Systfile,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-05-03 12:04:53

Dla tych, którzy nie chcą eleganckich rozwiązań, po prostu szybki i brudny sposób, aby zatrzymać te wiadomości, oto rozwiązanie, które działało dla mnie (używam Hibernate 4.3.6 i Eclipse i żadne odpowiedzi podane powyżej (lub Znalezione w Internecie) nie działały; ani pliki konfiguracyjne log4j, ani Ustawianie poziomu logowania programowo)

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

    ...
}

Użyłem go w programie samouczka pobranym z tej strony

 1
Author: Matej Vargovčík,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-09-10 14:42:53

Aby pozbyć się wyjścia loggera w konsoli, spróbuj tego.

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

loggerContext.stop();

Te polecenia wyłączyły wszystkie wyjścia konsoli z loggera.

 1
Author: Ramesh Gowtham,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-12-16 09:12:10

Pierwszą rzeczą do zrobienia jest ustalenie, który framework logowania jest rzeczywiście używany.

Wiele frameworków zostało już omówionych przez innych autorów powyżej. Jeśli używasz Logback, możesz rozwiązać ten problem, dodając ten logback.xml do Twojej classpath:

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

Więcej informacji: Instrukcja Logback-Konfiguracja

 1
Author: Christian Hoffmann,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-08-16 16:31:34

Zmieniłem "debug" na "info" i zadziałało. Oto co zrobiłem:

Przed:

log4j.rootLogger=debug, stdout, R

Po:

log4j.rootLogger=info, stdout, R 
 0
Author: user370677,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-11-13 14:02:18

Zastąp slf4j-jdk14-xxx.jar z slf4j-log4j12-xxx.jar. Jeśli masz oba, Usuń slf4j-jdk14-xxx.jar. Znaleziono To rozwiązanie w https://forum.hibernate.org/viewtopic.php?f=1&t=999623

 0
Author: Balakrishna,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-09-23 04:09:19