8

如何配置码头将其日志放入外部文件?

手册说我必须将 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

尽管我完成了上述所有操作,但我无法在目标目的地中看到任何日志。所有日志条目仍可从控制台获得

4

1 回答 1

12

更新说明(2016 年 6 月)

对于 Jetty 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模块,因为这严格用于 Jetty 的StdErrLog实现。该logging模块将捕获任何内容System.err并将System.out其重定向到滚动日志文件。此捕获和重定向将与您的 log4j 直接冲突ConsoleAppender

原始说明 - 仅适用于 Jetty 8(现在 EOL)及更早版本

跟着这些步骤:

  1. 在中创建一个日志目录$JETTY_HOME/lib:($JETTY_HOME/lib/logging这只是最佳实践)
  2. log4j,slf4j-log4jslf4j-api在该目录中:例如:log4j-1.2.16.jar slf4j-api-1.6.1.jar slf4j-log4j12-1.6.1.jar
  3. logging通过在您的行中添加“”,确保在码头的类路径中拥有该新目录$JETTY_HOME/start.ini OPTIONS:例如:OPTIONS=Server,websocket,resources,ext,jsp,jdbc,logging
  4. 把你log4j.properties$JETTY_HOME/resources目录
  5. 启动码头

如果您的 log4j.properties 设置正确,这应该适合您。我会注意在文档中提供这样的分步指南。

于 2013-03-18T12:50:56.170 回答