web-dev-qa-db-fra.com

Désactivation de la sortie de la console de journalisation en veille prolongée

J'utilise Hibernate 3 et je veux empêcher le vidage de tous les messages de démarrage sur la console. J'ai essayé de commenter les lignes stdout dans log4j.properties mais pas de chance. J'ai collé mon fichier journal ci-dessous. De plus, j'utilise Eclipse avec la structure de projet standard et dispose d'une copie de log4j.properties à la fois dans la racine du dossier de projet et dans le dossier bin.

### messages de journalisation directe sur 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 
 
 ### messages directs dans le fichier 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 
 
 ### définir les niveaux de journalisation - pour une journalisation plus détaillée, remplacez 'info' par 'debug' ### 
 
 log4j.rootLogger = warn, stdout 
 
 # log4j.logger.org.hibernate = info 
 log4j.logger.org.hibernate = debug 
 
 ### journal Activité d'analyse de requête HQL 
 # log4j.logger.org.hibernate.hql.ast.AST = debug 
 
 ## # enregistre uniquement le SQL 
 # log4j.logger .org.hibernate.SQL = debug 
 
 ### log Paramètres de liaison JDBC ### 
 log4j.logger.org.hibernate.type = info 
 # log4j.logger.org.hibernate.type = debug 
 
 ### log export/update du schéma de journalisation ### 
 log4j.logger.org.hiboolate.tool.hbm2ddl = debug 
 
 ### journal des arbres d'analyse syntaxique HQL 
 # log4j.logger.org.hibernate.hql = debug 
 
 ### activité du cache de journal ### 
 # log4j.logger.org.hibernate.cache = debug 
 
 ### journaliser l'activité de transaction 
 # log4j.logger.org.hibernate. transaction = debug 
 
 ### log acquisition des ressources JDBC 
 # log4j.logger.org.hibernate.jdbc = debug 
 
 ### activez la ligne suivante si vous souhaitez localiser la connexion ### 
 ### lors de l'utilisation de DriverManagerConnectionProvider ### 
 # log4j.logger.org.hibernate.connection.DriverManagerConnectionProvider = trac5
74
Jared

Essayez de définir un niveau de journalisation plus raisonnable. Définir le niveau de consignation sur info signifie que seuls les événements de journalisation situés à info ou à un niveau supérieur (warn, error et fatal) sont enregistrés, c'est-à-dire debug les événements de journalisation sont ignorés.

log4j.logger.org.hibernate=info

ou dans version XML du fichier de configuration log4j:

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

Voir aussi manuel de log4j .

70
Juha Syrjälä

Remarque importante: la propriété (partie de la configuration de veille prolongée, PAS de la configuration du cadre de journalisation!)

hibernate.show_sql

contrôle la journalisation directement à STDOUT en contournant tout cadre de journalisation (que vous pouvez reconnaître par le format de sortie manquant des messages). Si vous utilisez un cadre de journalisation tel que log4j, vous devriez toujours définir cette propriété sur false parce que cela ne vous procure aucun avantage.

Cette circonstance m'a irrité assez longtemps parce que je ne m'en suis jamais vraiment préoccupé jusqu'à ce que j'essaie d'écrire une référence concernant Hibernate.

73
user1050755

En cours d'exécution:

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

avant l’initialisation d’Hibernate a fonctionné pour moi.


Remarque: la ligne ci-dessus s’allume à chaque déconnexion (Level.OFF). Si vous voulez être moins strict, vous pouvez utiliser

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

c'est assez silencieux. (Ou vérifiez le Java.util.logging.Level classe pour plus de niveaux).

29
acdcjunior

Vous pouvez désactiver plusieurs sorties de hibernate en définissant cette propriété de hibernate (configuration hb) sur false:

hibernate.show_sql
hibernate.generate_statistics
hibernate.use_sql_comments

Mais si vous souhaitez désactiver toutes les informations de la console, vous devez définir le niveau d'enregistrement NONE of FATAL de classe org.hibernate comme le dit Juha.

16
rresino

J'ai finalement compris, c'est parce que Hibernate utilise maintenant slf4j log façade, pour passer à log4j, vous devez mettre les fichiers log4j et slf4j-log4j12 dans votre bibliothèque, puis les propriétés log4j prendront le contrôle des journaux Hibernate.

Mon paramètre pom.xml ressemble à ce qui suit:

    <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>
7
Liqun Chen

Pour désactiver Hibernate:select message dans le journal, il est possible de définir la propriété sur HibernateJpaVendorAdapter:

<bean id="jpaVendorAdapter"
    class="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter">
    <property name="showSql" value="false"/>
</bean> 
4
Systfile

Pour ceux qui ne veulent pas de solutions élégantes, juste un moyen rapide et sale d’arrêter ces messages, voici une solution qui a fonctionné pour moi (j’utilise Hibernate 4.3.6 et Eclipse et aucune réponse fournie ci-dessus (ou trouvée sur Internet) fonctionné; ni les fichiers de configuration log4j ni la définition du niveau de journalisation par programme)

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

    ...
}

Je l'ai utilisé dans un programme de tutoriel téléchargé à partir de ce site

2
Matej Vargovčík

La première chose à faire est de déterminer quel cadre de journalisation est réellement utilisé.

De nombreux cadres sont déjà couverts par d'autres auteurs ci-dessus. Si vous utilisez Logback, vous pouvez résoudre le problème en ajoutant ceci logback.xml à votre chemin de classe:

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

Informations complémentaires: Logback Manual-Configuration

2
Christian Hoffmann

Essayez de supprimer les sorties de l'enregistreur dans la console.

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

loggerContext.stop();

Ces instructions ont désactivé toutes les sorties de console de l'enregistreur.

1
Ramesh Gowtham

Remplacez slf4j-jdk14-xxx.jar par slf4j-log4j12-xxx.jar. Si vous avez les deux, supprimez slf4j-jdk14-xxx.jar. Vous avez trouvé cette solution sur https://forum.hibernate.org/viewtopic.php?f=1&t=99962

1
Balakrishna

J'ai changé le "débogage" en "info" et cela a fonctionné. Voici ce que j'ai fait:

Avant:

log4j.rootLogger=debug, stdout, R

Après:

log4j.rootLogger=info, stdout, R 
0
user370677