在maven jetty 7插件中启用调试日志记录
我正在运行一个带有简单mvn jetty:run
的java webapp mvn jetty:run
,使用最新的jetty插件,但我似乎找不到告诉jetty将DEBUG消息输出到控制台的方法(对于嵌入式jetty实例,而不是插件本身)。 它目前只输出WARN和INFO消息。 我试过设置-DDEBUG
和-DVERBOSE
,但他们什么也没做。 我已经看过文档 ,但它似乎没有涵盖这一点。
更新:好的,我终于把事情搞定了,这就是我所做的。
我的理解是Jetty 7对特定的日志框架没有任何依赖性,即使对于JSP引擎也是如此,因为Jetty 7使用JSP 2.1引擎。 所以你可以使用任何日志框架。 在这里,我将使用logback。
首先在插件中添加logback-classic
作为依赖项,并将logback.configurationFile
系统属性设置为指向配置文件:
... ... org.mortbay.jetty jetty-maven-plugin 7.0.0.pre5 logback.configurationFile ./src/etc/logback.xml ch.qos.logback logback-classic 0.9.15 ... ...
然后添加一个src/etc/logback.xml
配置文件。 低于最小配置:
%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n
通过此设置,jetty将输出DEBUG消息:
$ mvndocker:跑 ... 00:31:33.089 [main] DEBUG org.mortbay.log - 启动DefaultHandler @ 145e5a6 00:31:33.089 [main] DEBUG org.mortbay.log - 启动DefaultHandler @ 145e5a6 00:31:33.105 [main] DEBUG org.mortbay.log - 启动RequestLogHandler @ 1e80761 00:31:33.106 [main] DEBUG org.mortbay.log - 启动了RequestLogHandler @ 1e80761 00:31:33.106 [main] DEBUG org.mortbay.log - 启动HandlerCollection @ 1485542 00:31:33.106 [main] DEBUG org.mortbay.log - 启动HandlerCollection @ 1485542 00:31:33.106 [main] DEBUG org.mortbay.log - 启动org.mortbay.jetty.Server@a010ba 00:31:33.174 [main] DEBUG org.mortbay.log - 已启动org.mortbay.jetty.nio.SelectChannelConnector$1@ee21f5 00:31:33.216 [main] INFO org.mortbay.log - 已启动SelectChannelConnector@0.0.0.0:8080 00:31:33.217 [main] DEBUG org.mortbay.log - 已启动SelectChannelConnector@0.0.0.0:8080 00:31:33.217 [main] DEBUG org.mortbay.log - 已启动org.mortbay.jetty.Server@a010ba [INFO]启动了Jetty Server
资源:
- Maven Jetty插件页面
- [m2] jetty6插件&log4j消息/线程
- Logback文档中的第3章:Logback配置
为了扩展Pascal的答案,这就是log4j的工作原理:
... ... org.mortbay.jetty jetty-maven-plugin 7.0.0.pre5 log4j.configurationFile file:${project.basedir}/src/test/resources/log4j.properties log4j log4j 1.2.16 org.slf4j slf4j-api 1.6.1 org.slf4j slf4j-log4j12 1.6.1 ... ...
这是你的${project.basedir}/src/test/resources/log4j.properties
:
log4j.rootLogger=INFO, CONSOLE log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender log4j.appender.CONSOLE.layout=org.apache.log4j.PatternLayout log4j.appender.CONSOLE.layout.ConversionPattern = [%-5p] %c: %m\n log4j.logger.org.eclipse.jetty.util.log=INFO
其他资源:
- Jetty日志配置
- log4j配置
你也可以这样做“mvn -X jetty:run”
为了扩展Pascal和yegor256的答案,这就是它如何与SLF4J Simple logger
(这是最简单的选项,因为你只需要为slf4j-simple
添加依赖slf4j-simple
):
... ... org.mortbay.jetty jetty-maven-plugin 7.0.0.pre5 org.slf4j slf4j-simple 1.7.5 ... ...
可以直接从Maven pom配置SLF4J Logger。 默认值在http://www.slf4j.org/apidocs/org/slf4j/impl/SimpleLogger.html中描述
例如,登录到具有更高调试级别( TRACE
)的文件/tmp/output.log
:
org.slf4j.simpleLogger.logFile /tmp/output.log org.slf4j.simpleLogger.defaultLogLevel trace
我发现这个解决方案更方便
${project.basedir}/src/main/resources ${project.build.outputDirectory} log4j.properties
也不要忘记粘贴
true
对于资源插件