J'ai le fichier crearte log4j.properties comme ci-dessous:
log4j.logger.org.hibernate=INFO, hb
log4j.logger.org.hibernate.SQL=DEBUG
log4j.logger.org.hibernate.type=TRACE
log4j.logger.org.hibernate.hql.ast.AST=info
log4j.logger.org.hibernate.tool.hbm2ddl=warn
log4j.logger.org.hibernate.hql=debug
log4j.logger.org.hibernate.cache=info
log4j.logger.org.hibernate.jdbc=debug
log4j.appender.hb=org.Apache.log4j.ConsoleAppender
log4j.appender.hb.layout=org.Apache.log4j.PatternLayout
log4j.appender.hb.layout.ConversionPattern=HibernateLog --> %d{HH:mm:ss} %-5p %c - %m%n
log4j.appender.hb.Threshold=TRACE
Quelqu'un peut-il m'aider à l'inclure dans le fichier hibernate.cfg.xml
? Je suis désolé, je ne sais pas vraiment comment fonctionne log4j. Je crée ceci pour afficher ma requête d'hibernation avec value
au lieu de ?
mais malgré tout, il affiche ?
rien ne change, donc que dois-je continuer?
J'ai pris référence à partir d'ici Hibernate show real SQL
La propriété 'show_sql' dans votre fichier hibernate.cfg.xml entraîne l'impression des requêtes directement sur la console.
Log4j permet de consigner les sorties n'importe où, de la console au fichier, en passant par les ports réseau et les bases de données . Mais la configuration simple que vous avez est censée être imprimée également sur la console. Donc, commencez par supprimer la propriété show_sql pour voir si Log4j place quoi que ce soit sur la console.
Si cela ne fonctionne pas, cela indique que Log4j n'est pas configuré correctement. Si vous utilisez hibernate> 3.5, il utilise l’application slf4j, qui utilise logback par défaut au lieu de log4j . Vous pouvez facilement passer à log4j en supprimant les fichiers jarre de journal de votre chemin de classe et en ajoutant slf4j-log4j12. jar et log4j.jar à la place.
Le traçage Log4j imprime également les requêtes en utilisant "?", Mais il imprime également les liaisons de paramètres, c’est-à-dire ce que le "?" sera remplacé par par le pilote de base de données ou le serveur.
S'il vous plaît se référer hibernate référence selon votre version. Voici 3.3 Link
Modifier :-
Activer les catégories suivantes du journal 4j.
org.hibernate.SQL Log all SQL DML statements as they are executed org.hibernate.type Log all JDBC parameters
Dans la plupart des cas, il devrait suffire d'inclure log4j.properties
dans le chemin d'accès aux classes de l'application.
Voir Comment initialiser log4j correctement? .
Le lien en question déjà suggère que vous devriez rechercher des valeurs de paramètre SQL liées qui ne figurent pas dans SQL texte dans des instructions de journal distinctes, comme ceci: TRACE [BasicBinder] binding parameter [1] as [VARCHAR] - john doe
.
Mais je recommande de rester avec log4jdbc . C'est assez simple à utiliser. Et il est capable d’intégrer des valeurs de paramètres de requête dans du texte SQL imprimé.
Ajoutez ceci aussi
<property name="show_sql">true</property>
<property name="format_sql">true</property>
<property name="use_sql_comments">true</property>
votre problème sera résolu.
Vous ne pouvez pas imprimer les valeurs en ligne. Hibernate imprimera toujours le? lors de la journalisation des requêtes. La sortie de la journalisation org.hibernate.type au niveau DEBUG indique les valeurs et les types utilisés pour remplacer ces points d'interrogation.
Il n'est pas nécessaire d'ajouter hibernate.cfg.xml, il suffit de le placer dans classpath et de suivre les étapes mentionnées dans ce lien . Consultez ce lien: - http://makecodeeasy.blogspot.in/2013/03/logger -in-spring-web-application.html
Dans mon cas, n'était pas hibernate.cfg.xml, c'était le fichier log4j.xml dans lequel je mettais le code fourni par @jdev
<property name = "show_sql"> trueaffiche les requêtes SQL
<property name = "format_sql"> trueFormatez la requête affichée sur la console
<property name = "use_sql_comments"> truedes commentaires seront ajoutés aux requêtes
Si votre projet contient 1 000 requêtes imprimées sur la console, définissez les autres sur false: <property name = "show_sql"> true <property name = "format_sql"> false <property name = "use_sql_comments"> false
OU écrivez un appender dans le fichier log4j.xml que j'ai effectué dans mon projet, il suffit d'écrire toutes les requêtes SQL sur un fichier texte distinct spécifié ici: Configuration de la journalisation Hibernate à l'aide du fichier de configuration XML Log4j?
j'aime la journalisation SQL avec le proxy de jdbcdslog beaucoup plus que la journalisation hibernate