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

Logging Java Discussion :

Logger un programme Java


Sujet :

Logging Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Mars 2008
    Messages
    42
    Détails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 42
    Par défaut Logger un programme Java
    J'ai une application WEB(Spring) utilisant log4j, jusque là, aucun problème les logs fonctionnent etc...

    Pour des soucis de performance j'ai mis en place ActiveMQ afin de delester certain traitement sans pénaliser la navigation.

    Donc en gros mon controler (partie web) lance un job ActiveMQ qui lance un service.
    Ce service est contenu dans un jar déposé dans le repertoire lib d'activeMQ
    dans mon service je fais cette instanciation
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    	protected static final Log log = LogFactory.getLog(ExcelTplMensSuiviService.class);
    Et dans mon code des log.debug().

    mon jar contient également un fichier log4j.properties que voici
    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
     
    log4j.rootLogger=WARN, stdout, logfile
     
    log4j.logger.fr.omc=DEBUG
    log4j.logger.org.hibernate=WARN
    log4j.logger.org.hibernate.SQL=WARN
    log4j.logger.org.hibernate.type=WARN
    log4j.logger.org.hibernate.tool.hbm2ddl=WARN
     
    log4j.appender.stdout=org.apache.log4j.ConsoleAppender
    log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
    log4j.appender.stdout.layout.ConversionPattern=%d %p [%c] - %m%n
     
    log4j.appender.logfile=org.apache.log4j.RollingFileAppender
    log4j.appender.logfile.File=omc_core.log
    log4j.appender.logfile.MaxFileSize=512KB
    # Keep three backup files.
    log4j.appender.logfile.MaxBackupIndex=3
    # Pattern to output: date priority [category] - message
    log4j.appender.logfile.layout=org.apache.log4j.PatternLayout
    log4j.appender.logfile.layout.ConversionPattern=%d %p [%c] - %m%n
    Mon problème,est que les log des services exécuté via ActiveMQ ne sont pas tracé. si je modifie mon controller pour qu'il appelle directement le service sans ActiveMQ, j'ia mes logs.

    Dans une appli web, on définit dans chose dans le web.xml, mais là je n'ai rien configuré et je ne sais pas trop comment m'y prendre. Si quelqu'un à une idée, je l'en remercie par avance

  2. #2
    Membre chevronné Avatar de djsnipe
    Inscrit en
    Mai 2008
    Messages
    440
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 440
    Par défaut
    Par défaut ActiveMQ utilise commons-logging et pas Log4J.
    As-tu ajouté le jar de log4j dans les lib ?
    http://activemq.apache.org/how-can-i...d-logging.html

  3. #3
    Membre averti
    Inscrit en
    Mars 2008
    Messages
    42
    Détails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 42
    Par défaut
    J'avais lu pour le commons-logging mais j'ai pas trop compris comment il choisissait le logger qui va bien.

    Sinon dans mon repertoire lib d'activeMQ j'ai bien "log4j-1.2.14.jar"

    Je pense pas que le nom du jar aie une importance pour le classLoader.

    sinon je suis pas attaché à Log4j pour ce point. Car le pourquoi du comment c'est que mes traitement derière activeMQ sont trop lent je veux donc les optimiser pour cela j'ai besoin de mettre des trace dans mon code d'afficher mes requête hibernate etc.. Donc même un équivalent au system.out (je sais c pas jolie et pas performant) me conviendrait puisque c'est du temporaire.

  4. #4
    Membre chevronné Avatar de djsnipe
    Inscrit en
    Mai 2008
    Messages
    440
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 440
    Par défaut
    Si log4J est dans le classpath, il me semble qu'il sera choisi par commons-logging ? A vérifier sur la doc, sinon, il faut ajouter un commons-logging.properties qui force ce comportement.
    Le problème viens peut-être dans ton cas d'une autre archive JAR définie avant la tienne dans le classpath, et qui contient un fichier log4j.properties pris en compte en premier. Si c'est le cas, essayes de modifier la config (si c'est possible ...) du classpath.

  5. #5
    Membre averti
    Inscrit en
    Mars 2008
    Messages
    42
    Détails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 42
    Par défaut
    L'idée du classpath et du doublon delo4j.properties me parait très bonne.

    J'ai réussi à configurer activeMQ (wrapper.conf) le classpath. Si ça intéresse quelqu'un je lui dirais comment (j'ai un peu galèré).

    voici le log du lancement d'activeMq
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    DEBUG  | wrapper  | 2008/06/13 13:15:44 | command: "C:\WINDOWS\system32\java.exe" -Dprogram.name=lanceur.bat -Xms512m -Xmx1024m -Djava.library.path="." -classpath "lib/omc_core-1.0-SNAPSHOT.jar;lib/acegi-security-1.0.6.jar;lib/activation-1.1.jar;lib/activeio-core-3.1-SNAPSHOT-tests.jar;lib/activeio-core-3.1-SNAPSHOT.jar;lib/activemq-all-5.0.0.jar;lib/activemq-console-5.0.0.jar;lib/activemq-core-5.0.0-tests.jar;lib/activemq-core-5.0.0.jar;lib/activemq-jaas-5.0.0.jar;lib/activemq-optional-5.0.0.jar;lib/activemq-xmpp-5.0.0.jar;lib/antlr-2.7.6.jar;lib/aopalliance-1.0.jar;lib/asm-2.2.3.jar;lib/asm-all-2.2.3.jar;lib/asm-attrs-2.2.3.jar;lib/aspectjrt-1.5.3.jar;lib/aspectjweaver-1.5.3.jar;lib/avalon-framework-4.1.3.jar;lib/axis-1.2-RC1.jar;lib/bsh-2.0b4.jar;lib/camel-core-1.2.0.jar;lib/cglib-nodep-2.1_3.jar;lib/commons-beanutils-1.7.0.jar;lib/commons-codec-1.3.jar;lib/commons-collections-3.1.jar;lib/commons-dbcp-1.2.jar;lib/commons-digester-1.8.jar;lib/commons-fileupload-1.1.1.jar;lib/commons-httpclient-2.0.1.jar;lib/commons-io-1.1.jar;lib/commons-jexl-1.1.jar;lib/commons-lang-2.3.jar;lib/commons-logging-1.1.jar;lib/commons-logging-api-1.1.jar;lib/commons-pool-1.3.jar;lib/commons-validator-1.3.0.jar;lib/cos-05Nov2002.jar;lib/dom4j-1.6.1.jar;lib/ehcache-1.2.3.jar;lib/geronimo-j2ee-management_1.0_spec-1.0.jar;lib/geronimo-jms_1.1_spec-1.0.jar;lib/geronimo-spec-jta-1.0.1B-rc4.jar;lib/hibernate-3.2.5.ga.jar;lib/hsqldb-1.8.0.4.jar;lib/icu4j-2.6.1.jar;lib/itext-1.4.8.jar;lib/jaxb-api-2.0.jar;lib/jaxb-impl-2.0.2.jar;lib/jaxen-1.1-beta-6.jar;lib/jboss-backport-concurrent-1.0.jar;lib/jboss-j2ee-4.0.2.jar;lib/jboss-retro-1.1.0.jar;lib/jbpm-identity-3.2.2.jar;lib/jbpm-jpdl-3.2.2.jar;lib/jcr-1.0.jar;lib/jdom-1.0.jar;lib/jetty-6.1.4.jar;lib/jetty-util-6.1.4.jar;lib/jibx-run-1.1.5.jar;lib/js-1.6R2.jar;lib/jsr173_api-1.0.jar;lib/jta-1.0.1B.jar;lib/junit-4.4.jar;lib/jxls-core-0.9.5.jar;lib/jxls-reader-0.9.5.jar;lib/log4j-1.2.14.jar;lib/logkit-1.0.1.jar;lib/mail-1.4.jar;lib/mysql-connector-java-5.0.5.jar;lib/omc_core-1.0-SNAPSHOT.jar;lib/omc_report-1.0-SNAPSHOT.jar;lib/oro-2.0.8.jar;lib/poi-3.0.2-svn-patched.jar;lib/servlet-api-2.3.jar;lib/servlet-api-2.5-6.1.4.jar;lib/smackx-1.5.0.jar;lib/spring-aop-2.5.jar;lib/spring-aspects-2.5.jar;lib/spring-beans-2.5.jar;lib/spring-context-2.5.jar;lib/spring-context-support-2.5.jar;lib/spring-core-2.5.jar;lib/spring-dao-2.0.jar;lib/spring-hibernate3-2.0.jar;lib/spring-jdbc-2.5.jar;lib/spring-jms-2.5.jar;lib/spring-modules-jbpm31-0.8a.jar;lib/spring-modules-validation-0.8a.jar;lib/spring-orm-2.5.jar;lib/spring-support-2.0.3.jar;lib/spring-test-2.5.jar;lib/spring-tx-2.5.jar;lib/spring-web-2.0.jar;lib/sqljdbc-1.2.2828.100.jar;lib/stax-api-1.0.1.jar;lib/tagsoup-0.9.7.jar;lib/wstx-asl-3.2.1.jar;lib/xalan-2.6.0.jar;lib/xbean-spring-3.2.jar;lib/xercesImpl-2.6.2.jar;lib/xml-apis-1.0.b2.jar;lib/xmlParserAPIs-2.6.2.jar;lib/xmlpull-1.1.3.4d_b4_min.jar;lib/xom-1.0b3.jar;lib/xstream-1.1.2.jar;run.jar;wrapper.jar" -Dwrapper.key="7YpnCWQbPTU5OkAm" -Dwrapper.port=32000 -Dwrapper.jvm.port.min=31000 -Dwrapper.jvm.port.max=31999 -Dwrapper.debug="TRUE" -Dwrapper.pid=1360 -Dwrapper.version="3.2.0" -Dwrapper.native_library="wrapper" -Dwrapper.service="TRUE" -Dwrapper.cpu.timeout="10" -Dwrapper.jvmid=1 org.tanukisoftware.wrapper.WrapperSimpleApp fr.omc.fmk.mq.MqApplication
    Voici le log4j.propertire contenu dans omc_core-1.0-SNAPSHOT.jar
    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
     
    log4j.rootLogger=WARN, stdout, logfile
     
    log4j.logger.fr.omc=DEBUG
    log4j.logger.org.hibernate=WARN
    log4j.logger.org.hibernate.SQL=WARN
    log4j.logger.org.hibernate.type=WARN
    log4j.logger.org.hibernate.tool.hbm2ddl=WARN
     
    log4j.appender.stdout=org.apache.log4j.ConsoleAppender
    log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
    log4j.appender.stdout.layout.ConversionPattern=%d %p [%c] - %m%n
     
    log4j.appender.logfile=org.apache.log4j.RollingFileAppender
    log4j.appender.logfile.File=c:/omc_core.log
    log4j.appender.logfile.MaxFileSize=512KB
    # Keep three backup files.
    log4j.appender.logfile.MaxBackupIndex=3
    # Pattern to output: date priority [category] - message
    log4j.appender.logfile.layout=org.apache.log4j.PatternLayout
    log4j.appender.logfile.layout.ConversionPattern=%d %p [%c] - %m%n
    J'ai toujours pas de log, ni même le fichier omc_cor.log

  6. #6
    Membre averti
    Inscrit en
    Mars 2008
    Messages
    42
    Détails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 42
    Par défaut
    Ayé j'ai trouvééééééééé

    Dans le désespoir j'ai lancer activeMQ en mode console (et non plus en service) et j'ia remplacé mes log4j dans mon code par des system.out (c'est sale mais ça marche).

    A ce moment sur la console j'ai vu mes traces + celle d'une API j'ai donc regardé le jar de cette API qui, comme par hasard contenait un log4j.xml.

    Je me suis souvenu que log4j cherche d'abord dans le classpath le log4j.xml et ensuite le .properties. Donc dans mon cas peut importe l'ordre du classpath c'était le log4j.xml qui prenait la main. j'ai donc créer un log4.xml à la place de mon properties, vérifié que mon classpath utilisé mon jar en premier et j'ai enfin mes logs.

    Merci djsnipe pour tes pistes d'aides

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Avis] Les meilleurs programmes Java ?
    Par christopheJ dans le forum ImageJ
    Réponses: 69
    Dernier message: 07/10/2008, 01h12
  2. [Débutant] [Thread] Faire patienter un programme java....
    Par yoxx dans le forum Concurrence et multi-thread
    Réponses: 3
    Dernier message: 25/09/2005, 12h36
  3. [Apis]parser les arguments d'un programme Java
    Par sacofan dans le forum API standards et tierces
    Réponses: 4
    Dernier message: 06/08/2005, 14h32
  4. [votre avis m'interesse] Interface avec un programme Java
    Par LineLe dans le forum Interfaces Graphiques en Java
    Réponses: 29
    Dernier message: 11/12/2004, 11h39
  5. Lancement d'un programme java depuis un script php
    Par gexti dans le forum Développement Web en Java
    Réponses: 8
    Dernier message: 07/05/2004, 17h40

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