2013-03-18 3 views
7

Come configurare il molo per inserire i propri log in un file esterno?Come configurare il molo per mettere i log in un file esterno

Manual says che devo mettere slf4j nella directory lib.

Quello che ho fatto è stato:

  • scaricare slf4j e mettere slf4j-log4j12-1.7.3.jar in $ JETTY_HOME $/lib.
  • scaricare log4j e inserire log4j-1.2.17.jar in $ JETTY_HOME $/lib
  • creare un file di configurazione log4j. è disponibile dal basso:

<appender name="fileAppender" class="org.apache.log4j.RollingFileAppender"> 
    <param name="Threshold" value="DEBUG" />  
    <param name="File" value="c:/app/jetty/logs/server.log" /> 
    <layout class="org.apache.log4j.PatternLayout"> <param name="ConversionPattern" value="%d %-5p [%c{1}] %m %n" /> 
    </layout> 
</appender> 
<root> 
    <priority value="debug" /> 
    <appender-ref ref="fileAppender" /> 
</root> 
  • linea commentato

    "#org.eclipse.jetty.util.log.class=org.eclipse.jetty.util.log.StdErrLog" in $JETTY_HOME$/resources/jetty-logging.properties

Anche se ho fatto tutto ciò che è descritto in precedenza, io non sono in grado di vedere qualsiasi registro nelle destinazioni di destinazione. Tutte le voci di registro sono ancora disponibili dalla console

risposta

10

istruzioni aggiornate (giugno 2016)

Per Jetty 9+, userete una spaccatura ${jetty.home} e ${jetty.base} directory.

Nota: non modificare/modificare/cancellare/aggiungere/rimuovere qualsiasi contenuto in ${jetty.home}. D'ora in poi tutta la tua configurazione risiederà su ${jetty.base}.

istruzioni come linea di comando:

$ mkdir /path/to/mybase 
$ cd /path/to/mybase 

# Prepare a basic jetty.base directory 
$ java -jar /path/to/jetty-dist/start.jar --add-to-start=http,deploy,resources,ext 
INFO: ext    initialised in ${jetty.base}/start.ini 
INFO: resources  initialised in ${jetty.base}/start.ini 
INFO: server   initialised (transitively) in ${jetty.base}/start.ini 
INFO: http   initialised in ${jetty.base}/start.ini 
INFO: deploy   initialised in ${jetty.base}/start.ini 
MKDIR: ${jetty.base}/lib 
MKDIR: ${jetty.base}/lib/ext 
MKDIR: ${jetty.base}/resources 
MKDIR: ${jetty.base}/webapps 
INFO: Base directory was modified 

# Download the required jar files 
$ cd /path/to/mybase/lib/ext 
$ curl -O http://central.maven.org/maven2/org/slf4j/slf4j-api/1.7.21/slf4j-api-1.7.21.jar 
$ curl -O http://central.maven.org/maven2/org/slf4j/slf4j-log4j12/1.7.21/slf4j-log4j12-1.7.21.jar 
$ curl -O http://central.maven.org/maven2/log4j/log4j/1.2.17/log4j-1.2.17.jar 

# Prepare the Jetty side logging to use slf4j 
$ cd /path/to/mybase/resources 
$ echo "org.eclipse.jetty.util.log.class=org.eclipse.jetty.util.log.Slf4jLog" > jetty-logging.properties 

# Grab a copy of a log4j.xml to initialize things 
$ cd /path/to/mybase/resources 
$ curl -o log4j.xml https://gist.githubusercontent.com/joakime/13e31db59b83079be3fdc1a877de7060/raw/5c275a2a2f29445d6cdde7fcae3820da99e7234b/log4j.xml 

# Start Jetty 
$ cd /path/to/mybase 
$ java -jar /path/to/jetty-dist/start.jar 

Nota: non attivare il modulo logging come che è rigorosamente per StdErrLog implementazione di Jetty. Il modulo logging catturerà qualsiasi System.err e System.out e lo reindirizzerà a un file di registro a rotazione. Questa acquisizione e il reindirizzamento saranno in conflitto diretto con il tuo log4j ConsoleAppender!

istruzioni originali - Valido solo sul molo 8 (ora EOL) e più anziani

procedere come segue:

  1. creare una directory di registrazione in $JETTY_HOME/lib: $JETTY_HOME/lib/logging (questo è solo pratica migliore)
  2. put log4j, slf4j-log4j e slf4j-api in quella directory: ad es.: log4j-1.2.16.jarslf4j-api-1.6.1.jarslf4j-log4j12-1.6.1.jar
  3. assicurarsi di avere quella nuova directory nel percorso di classe del molo con l'aggiunta di "logging" nella vostra linea $JETTY_HOME/start.iniOPTIONS: esempio: OPTIONS=Server,websocket,resources,ext,jsp,jdbc,logging
  4. posto tuo log4j.properties in $JETTY_HOME/resources directory
  5. inizio molo

Se log4j.properties è configurato correttamente, questo dovrebbe funzionare per voi. Mi prenderò cura di avere una guida passo passo nella documentazione.

+3

Se si utilizza Jetty 9, si ha ancora 1 passaggio. esci da $ JETTY_HOME/resources/jetty-logging.properties per avere questa linea 1 ... org.eclipse.jetty.util.log.class = org.eclipse.jetty.util.log.Slf4jLog' –

+4

La documentazione per questo ha stato aggiornato ... [Esempio: registrazione con Apache Log4j] (http://www.eclipse.org/jetty/documentation/current/example-logging-log4j.html) –

+0

Sto usando Jetty9, ho seguito i tuoi passi, ma ho ottenuto ** eccezione java.lang.ClassNotFoundException: org.slf4j.LoggerFactory **. – Tom