2009-04-24 11 views
1

Ich habe ein eigenartiges Problem mit Log4j. Wir verwenden Weblogic 10 mit . Das funktioniert gut. Wir haben eine Möglichkeit gefunden, Tomcat 6 so zu betreiben, dass wir auf dieser Plattform entwickeln und auf Weblogic 10 bereitstellen können. Ich habe herausgefunden, wie man log4j.properies mit Tomcat 6 mit zusätzlichen JAs arbeiten kann, die den JULI Logging-Mechanismus verwenden in Tomcat 6. Leider funktioniert meine log4j.xml (die mit Weblogic funktioniert) nicht mit Tomcat 6. So bin ich gezwungen, log4j.properties zu verwenden.log4j mit Tomcat6

Ich konnte nicht herausfinden, wie Anwendung Klassenhierarchien in log4j.properties angezeigt werden. Also meine Frage ist, wie man auf die folgenden log4j.xml Einträge 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> 

Lassen Sie uns also konvertiert sagen, ich war einen Logger zu schreiben, die Protokolle für die Klassen in meiner com.abc.xyz Hierarchie erfasst. Wie kann ich das in log4j.properties angeben? (Ich habe mich um andere Werte gekümmert, wie Appentyp, DatePattern, ConversionPattern, FileName, Layout usw.)

Bitte beachten Sie, dass ich Ihnen den einzigen problemspezifischen Code gesendet habe.

Alternativ, wenn Sie die Antwort auf weiß, wie log4j.xml zu machen, die Teil meines Kriegsarchiv mit Tomcat 6 (Juli Gläser sind vorhanden und arbeiten gut mit log4j.properties) ist, bitte mich wissen lassen

Bitte helfen.

Suhaas

Antwort

2

Ich bin nicht ganz auf Ihre Frage klar. Ich habe log4j auf Tomcat 6 ohne Probleme bereitgestellt (können Sie die spezifischen Probleme bekannt geben, die Sie mit Ihrer xml-Konfiguration haben?). Ich bin mir nicht sicher, was Sie mit "Ich habe herausgefunden, wie man log4j.properies arbeiten mit Tomcat 6 mit zusätzlichen Gläsern, die den JULI-Logging-Mechanismus in Tomcat 6 verwenden".

  • ist die Konfiguration an der richtigen Stelle?
  • sind einige Ihrer Gläser geladen aus dem globalen Kater ($TOMCAT_HOME/lib) Verzeichnis? Wenn ja, die Bibliothek möglicherweise nach der Konfiguration aus dem globalen Verzeichnis, eher als aus Ihrer Webanwendung suchen.

Wenn Sie gerade darüber reden, wie getrennte Klassenhierarchien in Ihrem log4j Config zu verwalten, dann ist es so etwas wie:

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

Wir verwenden tomcat6 mit log4j. Wir folgten dem following manual, um log4j im Tomcat zu installieren - es ist komplizierter als auf den alten Versionen (4.1-5.5). Ich glaube, Sie sollten Ihre unter dem WEB-INF/classes Verzeichnis in Ihrem Krieg setzen.

Ein weiterer Ansatz ist die Feder Rahmen dafür zu verwenden - siehe Log4jConfigListener's API

0

scheint es mir, dass es kein Problem mit Erstellung von Protokollen auch mit log4j war.xml

Ich habe http://tomcat.apache.org/tomcat-6.0-doc/logging.html verwendet, um Protokollierungsmechanismus wie vorgeschlagen zu erstellen.

Interessanterweise wurden die Protokolle im Verzeichnis bin von Tomcat 6 erstellt !!! Es ist etwas, mit dem aktuellen Arbeitsverzeichnis und in meinem Fall zu tun, so scheint es, das bin-Verzeichnis zu sein, wie pro einigen Catalina

0

Einstellung Nach http://boncey.org/2006_7_25_log4j_with_xml_configuration

  1. export CATALINA_OPTS="-Dlog4j.configuration=log4j.xml" (ich nehme an, es zu zwingen, für .xml zu suchen statt .properties)
  2. log4j.xml Datei in WEB-INF/classes

gestellt hatte ich ein ähnliches Problem und das ist für mich gearbeitet.

0

paar einfachen Schritten unten beschrieben wird Ihnen helfen, Web-Anwendung log4j einzurichten initialisiert werden:

1) log4j.xml zu Ihrem (TOMCAT_HOME)/CATALINA_HOME/conf Verzeichnis kopieren. Die log4j.xml meiner Anwendung sieht wie folgt:

<?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)

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

3) In (TOMCAT_HOME)/CATALINA_HOME/conf Verzeichnis der Kater stoppen, haben Sie die tomcat6.conf Datei. Bearbeiten Sie die Datei wie unten beschrieben. Wenn CATALINA_OPTS in tomcat6.conf nicht vorhanden ist, erstellen Sie eins.

# 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) Starten Sie den Kater mit anwendungsspezifischen startup.sh Skript.

5) Das ist alles erledigt. Überprüfen Sie das Protokoll, um zu sehen, ob der Tomcat den von Ihnen angegebenen in tomcat6.conf liest.

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

Wichtig um das Protokoll zu bemerken: INFO: Server-Start in 547 ms log4j: Mit URL [file: /opt/otccalypso/guiadmd01/tomcat6/conf/log4j.xml] für die automatische log4j Aufbau. – Preetam