2013-03-18 103 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

相关问题