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

J’utilise hibernate 3 et je veux l’empêcher de transférer 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. J’utilise également eclipse avec la structure de projet standard et j’ai une copie de log4j.properties à la fois dans la racine du dossier du projet et dans le dossier bin.

  ### messages de journal directs à 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 au 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 plus de journalisation, modifiez "info" en "debug" ###

 log4j.rootLogger = warn, stdout

 # log4j.logger.org.hibernate = info
 log4j.logger.org.hibernate = debug

 ### log Activité de l'parsingur de requête HQL
 # log4j.logger.org.hibernate.hql.ast.AST = debug

 ### journal juste le SQL
 # log4j.logger.org.hibernate.SQL = debug

 ### log parameters de liaison JDBC ###
 log4j.logger.org.hibernate.type = info
 # log4j.logger.org.hibernate.type = debug

 ### log exportation / mise à jour du schéma ###
 log4j.logger.org.hibernate.tool.hbm2ddl = debug

 ### log Arbres d'parsing HQL
 # log4j.logger.org.hibernate.hql = debug

 ### activité du cache de journal ###
 # log4j.logger.org.hibernate.cache = debug

 ### activité de transaction de journal
 # log4j.logger.org.hibernate.transaction = debug

 ### journal d'acquisition de ressources JDBC
 # log4j.logger.org.hibernate.jdbc = debug

 ### active la ligne suivante si vous voulez suivre la connexion ###
 ### fuites lors de l'utilisation de DriverManagerConnectionProvider ###
 # log4j.logger.org.hibernate.connection.DriverManagerConnectionProvider = trac5 

Essayez de définir un niveau de journalisation plus raisonnable. Définir le niveau de journalisation sur info signifie que seuls les événements de journalisation au niveau info ou supérieur ( warn , error et fatal ) sont consignés, que les événements de journalisation du debug sont ignorés.

 log4j.logger.org.hibernate=info 

ou en version XML du fichier de configuration log4j:

    

Voir aussi le manuel log4j .

Remarque importante: la propriété (partie de la configuration d’Hibernate, ne fait PAS partie de la configuration du framework de journalisation!)

 hibernate.show_sql 

contrôle directement la journalisation dans STDOUT en contournant toute structure de journalisation (que vous pouvez reconnaître par le formatage de sortie manquant des messages). Si vous utilisez une structure de journalisation telle que log4j, vous devez toujours définir cette propriété sur false car elle ne vous procure aucun avantage.

Cette circonstance m’a longtemps irritée car je ne me suis jamais vraiment intéressée à ce sujet jusqu’à ce que j’essaie d’écrire des références concernant Hibernate.

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 désactive chaque connexion ( Level.OFF ). Si vous voulez être moins ssortingct, vous pouvez utiliser

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

c’est assez silencieux. (Ou consultez la classe java.util.logging.Level pour plus de niveaux).

Vous pouvez désactiver les nombreuses sorties d’hibernation qui définissent ces accessoires d’hibernation (configuration hb) a:

 hibernate.show_sql hibernate.generate_statistics hibernate.use_sql_comments 

Mais si vous voulez désactiver toutes les informations de la console, vous devez définir le niveau de l’enregistreur AUCUN de FATAL de la classe org.hibernate comme dit Juha.

J’ai finalement compris, parce que Hibernate utilise maintenant la façade log de slf4j, pour passer à log4j, vous devez placer les fichiers jars log4j et slf4j-log4j12 dans votre lib, puis les propriétés log4j prendront le contrôle des journaux Hibernate.

Mon paramètre pom.xml ressemble à celui-ci:

   log4j log4j 1.2.16   org.slf4j slf4j-log4j12 1.6.4  

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

    

Pour ceux qui ne veulent pas de solutions élégantes, juste un moyen rapide et efficace 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 n’est fournie ci-dessus (ou trouvée sur Internet). travaillé; ni les fichiers de configuration log4j ni la définition du niveau de journalisation par programmation)

 public static void main(Ssortingng[] 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é depuis ce site

Pour se débarrasser de la sortie de l’enregistreur dans la console, essayez ceci.

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

Ces instructions ont désactivé toutes les sorties de la console du consignateur.

La première chose à faire est de savoir quelle structure de journalisation est réellement utilisée.

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

 < ?xml version="1.0" encoding="UTF-8"?>    

Informations complémentaires: Logback Manual-Configuration

J’ai changé le “debug” en “info” et ça a fonctionné. Voici ce que j’ai fait:

Avant:

 log4j.rootLogger=debug, stdout, R 

Après:

 log4j.rootLogger=info, stdout, R 

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