Domanda

Ho un problema particolare con Log4j. Stiamo schierando su Weblogic 10 utilizzando log4j.xml. Che funziona bene. Abbiamo pensato un modo per eseguire Tomcat 6 in modo tale che possiamo sviluppare su questa piattaforma e distribuire su Weblogic 10.

ho capito come far funzionare log4j.properies con Tomcat 6 con barattoli aggiuntivi che utilizzano il meccanismo di registrazione JULI in Tomcat 6. Purtroppo, la mia log4j.xml (che funziona con Weblogic) non riesce a lavorare con Tomcat 6. Quindi sono costretto a utilizzare log4j.properties.

Non sono stato in grado di capire come indicare gerarchie di classi in applicazione log4j.properties. Quindi la mia domanda è: come si fa a convertire le seguenti voci log4j.xml a 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>

Quindi, diciamo che ero a scrivere un logger che cattura i registri per le classi nella mia gerarchia com.abc.xyz. Come faccio a indicare che in log4j.properties? (Ho preso cura di un altri valori, come il tipo di appenders, DatePattern, ConversionPattern, nome del file, la disposizione ecc.)

Si prega di notare, io ho mandato l'unico codice specifico problema.

In alternativa, se si conosce la risposta su come fare log4j.xml che fa parte del mio archivio guerra con Tomcat 6 (vasi JULI sono a posto e lavorare bene con log4j.properties), per favore fatemelo sapere

Si prega di aiutare.

Suhaas

È stato utile?

Soluzione

Io non sono del tutto chiare sulla sua domanda. Ho schierato log4j su Tomcat 6 senza problemi (puoi pubblicare i problemi specifici che stai avendo con il vostro config XML?). Non sono sicuro di cosa si intende per "Ho capito come far funzionare log4j.properies con Tomcat 6 con barattoli aggiuntivi che utilizzano il meccanismo di registrazione JULI in Tomcat 6").

  • è il config nella posizione corretta?
  • sono alcuni dei tuoi vasi essere caricato dalla Tomcat globale ($TOMCAT_HOME/lib) directory? Se è così la biblioteca potrebbe essere alla ricerca per la config dalla directory globale, piuttosto che dal vostro webapp.

Se si sta parlando solo di come gestire le gerarchie di classi distinte nella configurazione log4j, è qualcosa di simile:

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

Altri suggerimenti

Sembra a me che non c'era alcun problema con la creazione di tronchi anche con log4j.xml

Ho fatto uso http://tomcat.apache.org/tomcat- 6.0-doc / logging.html per creare meccanismo di registrazione come suggerito.

È interessante notare che i registri sono stati creati nella directory bin di Tomcat 6 !!! E 'qualcosa a che fare con la directory di lavoro corrente e nel mio caso sembra essere la directory bin come da qualche impostazione Catalina

A pochi semplici passi descritti di seguito vi aiuteranno a configurare log4j di applicazione web per essere inizializzati:

1) copia log4j.xml nella directory (TOMCAT_HOME)/CATALINA_HOME/conf. Il log4j.xml della mia applicazione si presenta come di seguito:

<?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) fermare la Tomcat

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

3) Nella directory (TOMCAT_HOME)/CATALINA_HOME/conf, si avrà il file tomcat6.conf. Modificare il file come descritto di seguito. Se non c'è CATALINA_OPTS nel tomcat6.conf, crearne uno.

# 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) Avviare il gatto con il vostro script startup.sh specifica applicazione.

5) questo è tutto, si sono tutti fatti. Controllare il registro per vedere se il gatto sta leggendo il log4j.xml da voi specificato in 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].

Stiamo usando tomcat6 con log4j. Abbiamo seguito il seguente manuale per l'installazione log4j nel gatto - è più complicato di quanto sulle vecchie versioni (4.1-5.5). Credo che si dovrebbe mettere il log4j.xml sotto la directory WEB-INF/classes nella vostra guerra.

Un ulteriore approccio è quello di utilizzare la struttura a molla per questo - vedi di Log4jConfigListener API

http://boncey.org/2006_7_25_log4j_with_xml_configuration

  1. export CATALINA_OPTS="-Dlog4j.configuration=log4j.xml" (suppongo per costringerlo a cercare .xml piuttosto che .properties)
  2. put file di log4j.xml in WEB-INF/classes

Ho avuto un problema simile e questo ha funzionato per me.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top