在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 

对于资源插件