2013-03-18 4 views
7

Wie wird die Anlegestelle konfiguriert, um ihre Protokolle in eine externe Datei zu stellen?So konfigurieren Sie die Anlegestelle, um Protokolle in eine externe Datei zu speichern

Manual says, dass ich Slf4j in das Verzeichnis lib versetzen muss.

Was ich tat, war:

  • herunterladen slf4j und slf4j-log4j12-1.7.3.jar in $ JETTY_HOME $/lib setzen.
  • herunterladen log4j und setzen Sie log4j-1.2.17.jar in $ JETTY_HOME $/lib
  • erstellen Sie eine log4j Konfigurationsdatei. es ist von unten zur Verfügung:

<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> 
  • kommentierte Linie

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

Obwohl ich alles tat, was oben beschrieben ist, bin ich nicht in der Lage zu sehen, alle Protokolle in den Zielzielen. Alle Log-Einträge sind nach wie vor von der Konsole

Antwort

10

Aktualisiert Anleitung (Juni 2016) zur Verfügung

Für Jetty 9+, werden Sie ein geteiltes ${jetty.home} und ${jetty.base} Verzeichnis werden.

Hinweis: Bearbeiten/Ändern/Löschen/Hinzufügen/Entfernen von Inhalten in ${jetty.home} nicht. Ihre gesamte Konfiguration wird ab sofort in ${jetty.base} gespeichert.

Anweisungen als Befehlszeile:

$ 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 

Hinweis: nicht aktivieren das logging Modul wie das ausschließlich für StdErrLog Die Anlegestelle Implementierung ist. Das logging Modul erfasst alle System.err und System.out und leitet es in eine rollende Protokolldatei um. Diese Aufnahme und Weiterleitung steht in direktem Konflikt mit Ihrem log4j ConsoleAppender!

Originalanweisungen - nur gültig auf Jetty 8 (jetzt EOL) und ältere

folgenden Schritte aus:

  1. erstellen Protokollverzeichnis in $JETTY_HOME/lib: $JETTY_HOME/lib/logging (dies ist nur Best Practice)
  2. setzen log4j, und slf4j-api in diesem Verzeichnis: eg: log4j-1.2.16.jarslf4j-api-1.6.1.jarslf4j-log4j12-1.6.1.jar
  3. stellen Sie sicher, dass neues Verzeichnis in Anlegesteg des Classpath haben von "logging" in Ihrer $JETTY_HOME/start.iniOPTIONS Zeile hinzufügen: zB: OPTIONS=Server,websocket,resources,ext,jsp,jdbc,logging
  4. Ort, um Ihren log4j.properties in $JETTY_HOME/resources Verzeichnis
  5. Start Anlegestelle

Wenn Ihre log4j.properties ordnungsgemäß eingerichtet ist, sollte dies für Sie funktionieren. Ich werde darauf achten, eine solche Schritt-für-Schritt-Anleitung in der Dokumentation zu haben.

+3

Wenn Sie Jetty 9 verwenden, haben Sie einen weiteren Schritt. Beenden Sie die Datei $ JETTY_HOME/resources/jetty-logging.properties, um diese 1 Zeile zu haben ... 'org.eclipse.jetty.util.log.class = org.eclipse.jetty.util.log.Slf4jLog' –

+4

Dokumentation dafür hat wurde aktualisiert ... [Beispiel: Logging mit Apache Log4j] (http://www.eclipse.org/jetty/documentation/current/example-logging-log4j.html) –

+0

Ich benutze Jetty9, befolge deine Schritte, aber geh ** java.lang.ClassNotFoundException: org.slf4j.LoggerFactory ** Ausnahme. – Tom

Verwandte Themen