IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Hibernate Java Discussion :

Logging Hibernate 2 - log4j.xml


Sujet :

Hibernate Java

  1. #1
    Membre éclairé Avatar de aelmalki
    Inscrit en
    Mars 2009
    Messages
    250
    Détails du profil
    Informations forums :
    Inscription : Mars 2009
    Messages : 250
    Par défaut Logging Hibernate 2 - log4j.xml
    Bonjour TLM,

    Je reviens vers vous pour vous exposer mon problème.

    J'ai vue des topic sur le forum concernant le logging des requêtes SQL générées par hibernate dans un fichier log issue de log4j. j'ai fais les modifications nécessaire mais je n'arrive pas a un résultat.

    Voila, je veux logger les requêtes sql génèrées par hibernate dans la console par System.out dans un fichier log, j'ai procéder comme suit :

    log4j.xml
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    <appender name="SQL-FILE" class="org.apache.log4j.DailyRollingFileAppender">
    		<param name="File" value="c://sql.log" />
    		<param name="DatePattern" value="'.'yyyy-MM-dd'.log'" />
     
    		<layout class="org.apache.log4j.PatternLayout">
    			<param name="ConversionPattern" value="%d [%t] %-5p %c - %m%n" />
    		</layout>
    	</appender>
     
    	<category name="net.sf.hibernate">
    		<priority value="DEBUG" />
                    <appender-ref ref="SQL-FILE" />
    	</category>
    Le fichier log est toujours vide, même si j'ai des requêtes SQL affichées dans la console.

    Le besoin à la fin est de logger les System.out d'hibernate dans un fichier log.

    J'utilise Hibernate 2 et log4j avec une configuration XML

    Merci beaucoup pour votre aide.

  2. #2
    Expert éminent
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    il n'y a rien de rien dans le fichier? Ou il y tout sauf le SQL?

  3. #3
    Membre éclairé Avatar de aelmalki
    Inscrit en
    Mars 2009
    Messages
    250
    Détails du profil
    Informations forums :
    Inscription : Mars 2009
    Messages : 250
    Par défaut
    un fichier créer nommé sql.log vide (0 ko)

    J'ai un autre appender qui trace les logs d'un autre traitement, ça marche, le fichier log est alimenté

    Merci beaucoup

  4. #4
    Expert éminent
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    et si tu remplace net.sf.hibernate par org.hibernate?

  5. #5
    Membre éclairé Avatar de aelmalki
    Inscrit en
    Mars 2009
    Messages
    250
    Détails du profil
    Informations forums :
    Inscription : Mars 2009
    Messages : 250
    Par défaut
    Toujours un fichier sql.log vide

    J'utilise la version Hibernate 2

  6. #6
    Membre chevronné
    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    476
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2003
    Messages : 476
    Par défaut
    Salut !

    Voila, je veux logger les requêtes sql générées par hibernate dans la console par System.out dans un fichier log,
    A priori, ton fichier est bon (la classe category est dépréciée mais je pense pas que ca puisse causer le problème).
    T'aurais pas deux fichiers de configuration log4J (un à jour et l'autre non) dans ton classpath ?

    Tu peux essayer org.hibernate. Mais à priori, c'est pour Hibernate 3.
    Si org.hibernate ne change rien , remplace ta balise category par celle ci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    <root>
    	 <level value="DEBUG" />
    	 <appender-ref ref="SQL-FILE" />
    </root>
    Ca te permettra de logger tous les DEBUG. Si t'as toujours rien,le prob n'est pas un prob de package mais de conf log4j.

  7. #7
    Membre éclairé Avatar de aelmalki
    Inscrit en
    Mars 2009
    Messages
    250
    Détails du profil
    Informations forums :
    Inscription : Mars 2009
    Messages : 250
    Par défaut
    Que ce soit avec org.hibernate ou bien avec le root les requêtes SQL ne sont pas exportées.

    Les logs hibernate sont des System.out et non pas DEBUG, comment peuvent-ils être enregistrer dans le fichier log avec le niveau DEBUG ?

    quand vous dites " Si t'as toujours rien,le prob n'est pas un prob de package mais de conf log4j." comment pourrais je modifier ma configuration pour afficher les requêtes dans les logs ? c'est quoi la configuration correct pour ce genre de manip ?

    Merci beaucoup pour votre intérêt.
    Bon courage.

  8. #8
    Membre chevronné
    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    476
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2003
    Messages : 476
    Par défaut
    Je t'en prie.
    J'adore ce forum, ca permet d'aider les autres et en plus d'apprendre plein de choses sympas

    En mettant la balise root, ton fichier sql.log était vide ou non ?

    Les logs hibernate sont des System.out
    Si tu veux logger tes propres infos via log4j, tu dois utiliser un logger et non un System.out.
    ex:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    // déclarer en champ le logger
    private static final Logger logger = Logger.getLogger(Maclasse.class);
    // dans ta méthode ou tu veux logger ta requete
    logger.info("ma requete ");
    Un System.out écrit seulement sur la sortie standard (console par exemple)

    c'est quoi la configuration correct pour ce genre de manip ?
    Ta configuration log4j semble bonne à priori.
    C'est pourquoi, j'aimerais que tu me dises si le fichier sql.log est toujours vide ou non quand tu utilises la balise root comme indiquée.

  9. #9
    Membre éclairé Avatar de aelmalki
    Inscrit en
    Mars 2009
    Messages
    250
    Détails du profil
    Informations forums :
    Inscription : Mars 2009
    Messages : 250
    Par défaut
    Oui, je suis d'accord avec vous, mais le faite que faire des System.out ce n'est pas moi qui le fait manuellement, c'est hibernate qui genere des requetes sous ce format.

    Par exemple quand j'appel la méthode saveOrUpdate, Hibernate affiche dans la console "inser into table values(...." ou bien "update table..."

    Moi en fait je veux prendre ces requetes emise par Hibernate dans la console dans mon fichier log.

    Merci encore une fois

  10. #10
    Membre chevronné
    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    476
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2003
    Messages : 476
    Par défaut
    De rien, de rien, de rien

    Par contre, tu ne m'as toujours pas répondu.
    Ton fichier sql.log est toujours vide (aucun caractère) ou non lorsque tu utilises la balise root ?


    Bonjour la galère si Hibernate 2 n'utilise pas de logger systématiquement.
    Je viens de voir dans les sources d'Hibernate 2 qu'ils utilisent parfois le niveau trace pour afficher certaines infos de log.
    Essaye root comme cela :
    <root>
    <level value="TRACE" />
    <appender-ref ref="SQL-FILE" />
    </root>

  11. #11
    Expert éminent
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    avec le root t'as toujours rien dans le fichier de log?

    -> soit hibernate 2 n'utilise pas log4j (ce dont je doute, mais je ne connais pas assez cette vieille version)
    -> soit tu écrase ta config log4j quelque part et donc, après avoir créé ton appender (qui crée le fichier .log) ton appender est droppé pour quelque chose d'autre ....


    Pour tester la deuxième hypothèse, met une commande de log quelque part dans ton code dans ce genre:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Logger.getLogger("net.sf.hibernate.Test").debug("Ceci est un test");
    et vois si ça fini dans ton fichier de log.

  12. #12
    Membre éclairé Avatar de aelmalki
    Inscrit en
    Mars 2009
    Messages
    250
    Détails du profil
    Informations forums :
    Inscription : Mars 2009
    Messages : 250
    Par défaut
    Le fichier sql.log est rempli par les log du niveau DEBUG, pour le moment pas de requete SQL dans le fichier.

    Même constat pour TRACE

    Je test la proposition de tchize_ et je vous tiendrai au courant.

  13. #13
    Membre éclairé Avatar de aelmalki
    Inscrit en
    Mars 2009
    Messages
    250
    Détails du profil
    Informations forums :
    Inscription : Mars 2009
    Messages : 250
    Par défaut
    J'ai fais le test avec ce fichier de config:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
     
    <?xml version="1.0" encoding="UTF-8" ?>
    <!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">
     
    <log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/">
     
    	<appender name="LOG-FILE" class="org.apache.log4j.DailyRollingFileAppender">
            <param name="File"   value="c:\\log_file.log" />
            <param name="DatePattern" value="'.'yyyy-MM-dd'.log'" />
     
            <layout class="org.apache.log4j.PatternLayout">
    			<param name="ConversionPattern" value="%d [%t] %-5p %c - %m%n"/>
            </layout>	    
    	</appender>
     
    	<appender name="JDBC-FILE" class="org.apache.log4j.DailyRollingFileAppender">
            <param name="File"   value="c:\\sqlLog.log" />
            <param name="DatePattern" value="'.'yyyy-MM-dd'.log'" />
     
            <layout class="org.apache.log4j.PatternLayout">
    			<param name="ConversionPattern" value="%d [%t] %-5p %c - %m%n"/>
            </layout>	    
    	</appender>
     
    	<category name="net.sf.hibernate">
    		<appender-ref ref="JDBC-FILE"/>
    	</category>
     
    	<root>	   
    	   	<priority value="debug" />
       	   	<appender-ref ref="LOG-FILE" />     	       	    	   	   
    	</root>
     
    </log4j:configuration>
    J'ai ajouté comme demandé la ligne dans une classe, au passage sur cette classe le log n'est pas affichée.
    Le fichier sql est toujours vide, alors que le fichier LOG-FILE est remplis par autres logs ajoutés dans l'application.

    Pour information : j'utilise WAS 5 comme serveur d'application.

    Merci à vous.

  14. #14
    Membre éclairé Avatar de aelmalki
    Inscrit en
    Mars 2009
    Messages
    250
    Détails du profil
    Informations forums :
    Inscription : Mars 2009
    Messages : 250
    Par défaut
    Savez vous comment pourrais je avoir la source du jar Hibernate2 ?

  15. #15
    Membre chevronné
    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    476
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2003
    Messages : 476
    Par défaut
    Aucune idée, j'avais cherché lors de ton 1er post et j'avais rien trouvé.

    Au pire, si tu trouves pas, il te reste les outils de décompilation de jar.
    J'utilise Java Decompiler. Il a de très bons outils. Par ex : sauvegarder les sources d'un jar compilés.

  16. #16
    Expert éminent
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    Citation Envoyé par aelmalki Voir le message
    Savez vous comment pourrais je avoir la source du jar Hibernate2 ?
    http://hibernate.cvs.sourceforge.net...te/Hibernate2/

  17. #17
    Membre chevronné
    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    476
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2003
    Messages : 476
    Par défaut
    tchize_,

    Tu m'étonneras toujours

Discussions similaires

  1. Réponses: 2
    Dernier message: 19/02/2009, 16h21
  2. Log Hibernate avec affichage des paramètres
    Par romaintaz dans le forum Hibernate
    Réponses: 1
    Dernier message: 17/08/2007, 12h17
  3. Réponses: 4
    Dernier message: 27/07/2007, 15h37
  4. [LOG] comment utiliser log4j ?
    Par n!co dans le forum Hibernate
    Réponses: 1
    Dernier message: 14/10/2006, 19h08
  5. Réponses: 2
    Dernier message: 17/08/2006, 08h26

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo