2013-03-18 101 views
7

如何配置jetty以將其日誌放入外部文件中?如何配置jetty以將日誌放入外部文件

Manual says我必須將slf4j放入lib目錄中。

我所做的是:

  • 下載SLF4J,把SLF4J-log4j12-1.7.3.jar到$ JETTY_HOME $/lib目錄下。
  • 下載log4j並將log4j-1.2.17.jar放入$ JETTY_HOME $/lib
  • 創建一個log4j配置文件。這可從以下:

<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> 
  • 註釋行

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

雖然我沒有什麼上述的一切,我不能看到目標目標中的任何日誌。所有日誌條目仍可以從

回答

10

更新說明(2016年6月)

對於碼頭9+,你將使用拆分${jetty.home}${jetty.base}目錄控制檯。

注意:請勿編輯/修改/刪除/添加/刪除${jetty.home}中的任何內容。從現在開始,所有的配置都將駐留在${jetty.base}中。

說明作爲命令行:

$ 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 

注意:不要讓logging模塊嚴格限定在碼頭的StdErrLog實現。該logging模塊將捕獲任何System.errSystem.out並將其重定向到滾動日誌文件。此捕獲和重定向將與您的log4j ConsoleAppender直接衝突!

原始指令 - 僅適用於碼頭8(現在的EOL)有效和老年人

遵循以下步驟:

  1. $JETTY_HOME/lib創建日誌目錄:$JETTY_HOME/lib/logging(這只是最佳實踐)
  2. log4j,slf4j-log4jslf4j-api放在該目錄中: 例如:log4j-1.2.16.jarslf4j-api-1.6.1.jarslf4j-log4j12-1.6.1.jar
  3. 確保在您的$JETTY_HOME/start.iniOPTIONS行加入 「logging」 有在碼頭的classpath新目錄: 如:OPTIONS=Server,websocket,resources,ext,jsp,jdbc,logging
  4. 地方你log4j.properties$JETTY_HOME/resources目錄
  5. 開始碼頭

如果你的log4j.properties設置正確,這應該適合你。我會照顧到文檔中的這樣一步一步的指南。

+3

如果您使用的是Jetty 9,那麼您還有1個步驟。退出$ JETTY_HOME/resources/jetty-logging.properties以使這1行...'org.eclipse.jetty.util.log.class = org.eclipse.jetty.util.log.Slf4jLog' – 2013-03-18 13:01:52

+4

此文檔已已更新... [示例:使用Apache Log4j進行日誌記錄](http://www.eclipse.org/jetty/documentation/current/example-logging-log4j.html) – 2013-03-18 18:16:28

+0

我使用Jetty9,按照您的步驟操作,但獲取** java.lang.ClassNotFoundException:org.slf4j.LoggerFactory **異常。 – Tom 2014-04-14 08:46:59

相關問題