2009-04-24 7 views
1

J'ai un problème particulier avec Log4j. Nous déployons sur Weblogic 10 en utilisant log4j.xml. Cela fonctionne bien. Nous avons trouvé un moyen d'exécuter Tomcat 6 de telle sorte que nous puissions développer sur cette plate-forme et déployer sur Weblogic 10.log4j avec Tomcat6

J'ai trouvé comment faire fonctionner log4j.properies avec Tomcat 6 avec JArs supplémentaires qui utilisent le mécanisme de notation JULI dans Tomcat 6. Malheureusement, mon log4j.xml (qui fonctionne avec Weblogic) ne fonctionne pas avec Tomcat 6. Je suis donc obligé d'utiliser log4j.properties.

Je n'ai pas réussi à comprendre comment indiquer les hiérarchies de classe d'application dans log4j.properties. Donc, ma question est de savoir comment convertir les log4j.xml entrées suivantes log4j.properties

<?xml version="1.0" encoding="UTF-8" ?> 
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd"> 

<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/"> 

<appender name="vccashib" class="org.apache.log4j.DailyRollingFileAppender"> 
    <param name="DatePattern" value="'.'yyyy-MM-dd"/> 
    <param name="File" value="vccashib_10.log"/> 
    <layout class="org.apache.log4j.PatternLayout"> 
     <param name="ConversionPattern" value="%d{ISO8601} %t %-5p %c - %m%n"/> 
    </layout> 
    </appender> 

    <logger name="org.hibernate"> 
    <level value="DEBUG"/> 
    <appender-ref ref="vccashib" /> 
    </logger> 

</log4j:configuration> 

nous allons donc dire que je devais écrire un enregistreur qui capture les journaux pour les classes dans ma com.abc.xyz hiérarchie. Comment est-ce que je l'indique dans log4j.properties? (J'ai pris en charge d'autres valeurs, telles que le type d'appenders, DatePattern, ConversionPattern, FileName, mise en page, etc.)

Veuillez noter que je vous ai envoyé le seul code spécifique à un problème.

Par ailleurs, si vous connaissez la réponse sur la façon de faire log4j.xml qui fait partie de mes archives de guerre avec Tomcat 6 (pots juli sont en place et fonctionnent bien avec log4j.properties), s'il vous plaît laissez-moi savoir

S'il vous plaît aider.

Suhaas

Répondre

2

Je ne suis pas tout à fait clair sur votre question. J'ai déployé log4j sur tomcat 6 sans problèmes (pouvez-vous signaler les problèmes spécifiques que vous rencontrez avec votre config xml?). Je ne suis pas sûr de ce que vous entendez par "J'ai compris comment faire log4j.properies travailler avec Tomcat 6 avec des pots supplémentaires qui utilisent le mécanisme de journalisation JULI dans Tomcat 6").

  • est la config à l'emplacement approprié?
  • Certains de vos jars sont-ils chargés depuis le répertoire global tomcat ($TOMCAT_HOME/lib)? Si tel est le cas, la bibliothèque peut rechercher la configuration à partir du répertoire global, plutôt que de votre application Web.

Si vous parlez seulement la façon de gérer des hiérarchies de classes séparées dans votre config log4j, il est quelque chose comme:

log4j.rootCategory=INFO,stdout 

#e.g. not interested in most stripes or spring warnings 
log4j.logger.net.sourceforge.stripes=ERROR 
log4j.logger.org.springframework=ERROR 

log4j.appender.stdout=org.apache.log4j.ConsoleAppender 
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout 
log4j.appender.stdout.layout.ConversionPattern=%-d %-5p [%t] %c{1} %3x - 
%m%n 

#This creates the separate log "Foo" at DEBUG level. Everythign within 
#the "com.foo" package will 
# get logged here 
log4j.category.com.foo=DEBUG,Foo 
log4j.appender.Foo=org.apache.log4j.RollingFileAppender 
log4j.appender.Foo.layout=org.apache.log4j.PatternLayout 
log4j.appender.Foo.layout.ConversionPattern=%-d %-5p [%t] %c{1} %3x - %m%n 
log4j.appender.DetailLogFile.File=foo.log 
#this is the important line - if this isn't here the stuff in 
#com.foo package will show up in both logs. 
log4j.additivity.com.foo=false 
0

Nous utilisons tomcat6 avec log4j. Nous avons suivi le following manual pour installer log4j dans le tomcat - c'est plus compliqué que sur les anciennes versions (4.1-5.5). Je crois que vous devriez mettre votre log4j.xml sous le répertoire WEB-INF/classes dans votre guerre.

Une autre approche consiste à utiliser le cadre de printemps pour cela - voir Log4jConfigListener's API

0

Il me semble qu'il n'y avait pas de problème avec la création de journaux, même avec log4j.J'ai utilisé http://tomcat.apache.org/tomcat-6.0-doc/logging.html pour créer un mécanisme de journalisation comme suggéré.

Il est intéressant de noter que les journaux étaient créés dans le répertoire bin de Tomcat 6 !!! Il est quelque chose à voir avec le répertoire de travail et dans mon cas, il semble être le répertoire bin comme par un certain réglage Catalina

0

Selon http://boncey.org/2006_7_25_log4j_with_xml_configuration

  1. export CATALINA_OPTS="-Dlog4j.configuration=log4j.xml" (je suppose que pour le forcer à chercher .xml plutôt que .properties)
  2. placer le fichier dans log4j.xmlWEB-INF/classes

J'ai eu un problème similaire et cela a fonctionné pour moi.

0

quelques étapes simples décrites ci-dessous vous aidera à mettre en place le log4j de l'application Web à initialisés:

1) copie log4j.xml à votre répertoire (TOMCAT_HOME)/CATALINA_HOME/conf. Le log4j.xml de ma demande ressemble ci-dessous:

<?xml version="1.0" encoding="UTF-8"?> 
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd" > 
<log4j:configuration> 
<appender name="stdout" class="org.apache.log4j.ConsoleAppender"> 
    <layout class="org.apache.log4j.PatternLayout"> 
    <param name="ConversionPattern" value="%d{ABSOLUTE} 
     %5p %c{1}:%L -Preetam %m%n"/> 

     </layout> 
    </appender> 
     <root> 
     <!-- <priority value="info"></priority> --> 
       <priority value="debug"></priority> 
      <appender-ref ref="stdout"/> 
     </root> 
</log4j:configuration> 

2) arrêter le tomcat

tomcat6 stop /var/tmp/tomcat-20120622.log (use your application specific stop.sh script) 

3) Dans (TOMCAT_HOME)/CATALINA_HOME/conf répertoire, vous aurez le fichier tomcat6.conf. Modifiez le fichier comme décrit ci-dessous. S'il n'y a pas CATALINA_OPTS dans le tomcat6.conf, créez-en un.

# Settings for the CATALINA_OPTS to pick web application's log4j.xml from the specified location 
CATALINA_OPTS="${CATALINA_OPTS}-Dlog4j.debug - Dlog4j.configuration=file:${CATALINA_HOME}/conf/log4j.xml" 

4) Démarrez le tomcat avec votre script demande startup.sh spécifique.

5) C'est tout, vous avez terminé. Vérifiez le journal pour voir si le Tomcat lit le log4j.xml spécifié par vous dans tomcat6.conf.

tail -f /var/tmp/tomcat-20120622.log

Jun 22, 2012 3:28:35 PM org.apache.catalina.startup.HostConfig deployDirectory 
INFO: Deploying web application directory examples 
Jun 22, 2012 3:28:35 PM org.apache.coyote.http11.Http11Protocol start 
INFO: Starting Coyote HTTP/1.1 on http-8080 
Jun 22, 2012 3:28:35 PM org.apache.jk.common.ChannelSocket init 
INFO: JK: ajp13 listening on /0.0.0.0:8009 
Jun 22, 2012 3:28:35 PM org.apache.jk.server.JkMain start 
INFO: Jk running ID=0 time=0/12 config=null 
Jun 22, 2012 3:28:35 PM org.apache.catalina.startup.Catalina start 
INFO: Server startup in 547 ms 
log4j: Using URL [file:/opt/otccalypso/guiadmd01/tomcat6/conf/log4j.xml] for automatic log4j configuration. 
log4j: Preferred configurator class: org.apache.log4j.xml.DOMConfigurator 
log4j: System property is :null 
log4j: Standard DocumentBuilderFactory search succeded. 
log4j: DocumentBuilderFactory is: com.sun.org.apache.xerces.internal.jaxp.DocumentBuilderFactoryImpl 
log4j: debug attribute= "null". 
log4j: Ignoring debug attribute. 
log4j: Threshold ="null". 
log4j: Level value for root is [debug]. 
log4j: root level set to DEBUG 
log4j: Class name: [org.apache.log4j.ConsoleAppender] 
log4j: Parsing layout of class: "org.apache.log4j.PatternLayout" 
log4j: Setting property [conversionPattern] to [%d{ABSOLUTE}  %5p %c{1}:%L -Preetam %m%n]. 
log4j: Adding appender named [stdout] to category [root]. 
+0

Il est important de remarquer le journal: INFO: démarrage du serveur en 547 ms log4j: URL à l'aide [fichier: /opt/otccalypso/guiadmd01/tomcat6/conf/log4j.xml] pour log4j automatique configuration. – Preetam