Je n'ai pas été en mesure de trouver de documentation sur la façon de configurer la journalisation d'Hibernate à l'aide du fichier de configuration de style XML pour Log4j.
Est-ce même possible ou dois-je utiliser un fichier de configuration de style de propriétés pour contrôler la journalisation d'Hibernate?
Si quelqu'un a des informations ou des liens vers de la documentation, nous vous en serions reconnaissants.
EDIT:
Juste pour clarifier, je cherche un exemple de la syntaxe XML réelle pour contrôler Hibernate.
EDIT2:
Voici ce que j'ai dans mon fichier de configuration XML.
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">
<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/">
<appender name="console" class="org.apache.log4j.ConsoleAppender">
<param name="Threshold" value="info"/>
<param name="Target" value="System.out"/>
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="%d{ABSOLUTE} [%t] %-5p %c{1} - %m%n"/>
</layout>
</appender>
<appender name="rolling-file" class="org.apache.log4j.RollingFileAppender">
<param name="file" value="Program-Name.log"/>
<param name="MaxFileSize" value="1000KB"/>
<!-- Keep one backup file -->
<param name="MaxBackupIndex" value="4"/>
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="%d [%t] %-5p %l - %m%n"/>
</layout>
</appender>
<root>
<priority value ="debug" />
<appender-ref ref="console" />
<appender-ref ref="rolling-file" />
</root>
</log4j:configuration>
La journalisation fonctionne bien, mais je recherche un moyen de quitter et de contrôler la journalisation de mise en veille prolongée de manière distincte de la journalisation au niveau de mon application, car elle inonde actuellement mes journaux. J'ai trouvé des exemples d'utilisation du fichier de préférences pour ce faire, je me demandais simplement comment je pouvais le faire dans un fichier XML.
Réponses:
De http://docs.jboss.org/hibernate/core/3.3/reference/en/html/session-configuration.html#configuration-logging
Voici la liste des catégories d'enregistreurs:
Formaté pour être collé dans un fichier de configuration XML log4j:
NB: La plupart des loggers utilisent le niveau DEBUG, cependant org.hibernate.type utilise TRACE. Dans les versions précédentes de Hibernate org.hibernate.type utilisait également DEBUG, mais à partir d'Hibernate 3, vous devez définir le niveau sur TRACE (ou ALL) afin de voir la journalisation de la liaison des paramètres JDBC.
Et une catégorie est spécifiée comme telle:
Il doit être placé avant l'élément racine.
la source
org.hibernate.engine.transaction
. Voir: docs.jboss.org/hibernate/orm/4.2/devguide/en-US/html/…L
in, par exemple,<Logger name="org.hibernate.SQL" level="debug" />
devrait-il réellement être capitalisé? Je reçois une erreur dans Tomcat au démarrage en capitalisant L:"The content of element type 'log4j:configuration' must match '(renderer*,throwableRenderer*,appender*,plugin*,(category|logger)*,root?,(categoryFactory|loggerFactory)?)'."
. Je ne sais pas non plus comment cela devrait être entré dans mon fichier log4j.xml. Dois-je avoir un<logger>
bloc séparé pour chaque catégorie, avec les<level>
balises, ou puis-je m'en tirer avec les one-liners que vous avez présentés?La réponse de Loki renvoie à la documentation Hibernate 3 et fournit de bonnes informations, mais je n'obtenais toujours pas les résultats escomptés.
Beaucoup de battements, de mouvements de bras et de courses de souris mortes m'ont finalement valu mon fromage.
Étant donné qu'Hibernate 3 utilise Simple Logging Facade pour Java (SLF4J) (selon la documentation), si vous comptez sur Log4j 1.2, vous aurez également besoin du slf4j-log4j12-1.5.10.jar si vous souhaitez configurer entièrement la journalisation Hibernate avec un fichier de configuration log4j. J'espère que cela aidera le prochain.
la source
En réponse au commentaire d'homaxto, voici ce que j'ai en ce moment.
La partie clé étant
J'espère que cela t'aides.
la source
Voici ce que j'utilise:
Évidemment, je n'aime pas voir les messages Hibernate;) - réglez le niveau sur "debug" pour obtenir la sortie.
la source
Les réponses étaient utiles. Après le changement, j'ai obtenu une journalisation en double des instructions SQL, une dans le fichier journal log4j et une sur la console standard. J'ai changé le fichier persistence.xml pour dire show_sql à false pour me débarrasser de la journalisation de la console standard. Garder format_sql true affecte également le fichier journal log4j, donc j'ai gardé cela vrai.
la source
Vous pouvez configurer votre
log4j
fichier avec la balise category comme ceci (avec un appender de console pour l'exemple):Ainsi, chaque avertissement, erreur ou message fatal de la mise en veille prolongée sera affiché, rien de plus. En outre, votre code et le code de la bibliothèque seront au niveau info (donc info, avertissement, erreur et fatal)
Pour changer le niveau de journal d'une bibliothèque, ajoutez simplement une catégorie, par exemple, au journal des informations sur les ressorts désactivés:
Ou avec un autre appendeur, cassez l'additivité (la valeur par défaut d'additivité est vraie)
Et si vous ne voulez pas de ce journal d'hibernation à chaque requête, définissez la propriété hibernate
show_sql
surfalse
.la source