如何配置jetty将其日志放入外部文件?
Manual says我必须将slf4j放入lib目录。
我做的是:
<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
虽然我做了上面描述的所有事情,但我无法在目标目的地看到任何日志。所有日志条目仍可从控制台获取
答案 0 :(得分:10)
对于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
并将其重定向到滚动日志文件。此捕获和重定向将与您的log4jConsoleAppender
直接冲突!
请按照以下步骤操作:
$JETTY_HOME/lib
中创建一个日志目录:$JETTY_HOME/lib/logging
(这只是最佳做法)log4j
,slf4j-log4j
和slf4j-api
放在该目录中:
例如:log4j-1.2.16.jar
slf4j-api-1.6.1.jar
slf4j-log4j12-1.6.1.jar
logging
$JETTY_HOME/start.ini
行中添加“OPTIONS
”,确保在jetty的类路径中包含该新目录:
例如:OPTIONS=Server,websocket,resources,ext,jsp,jdbc,logging
log4j.properties
放入$JETTY_HOME/resources
目录如果你的log4j.properties设置正确,这应该适合你。我会注意在文档中有这样一步一步的指导。