2010-03-03 187 views
18

我使用最新的jetty插件運行一個簡單的mvn jetty:run的java webapp,但我似乎無法找到一種方法來告訴jetty將DEBUG消息輸出到控制檯(for嵌入式碼頭實例,而不是插件本身)。目前它只輸出WARN和INFO消息。我試過設置-DDEBUG-DVERBOSE,但他們什麼也沒做。我已經看過documentation,但似乎沒有涵蓋這一點。在maven jetty 7插件中啓用調試日誌記錄

回答

18

更新:好吧,我終於得到了事情的工作,這就是我所做的。

我的理解是,由於Jetty 7使用JSP 2.1引擎,Jetty 7對特定的日誌框架沒有任何依賴關係,即使對於JSP引擎也是如此。所以你可以使用任何日誌框架。這裏我將使用logback。

首先添加logback-classic如插件依賴性和設置logback.configurationFile系統屬性點上的配置文件:

<project> 
    ... 
    <build> 
    ... 
    <plugins> 
     <plugin> 
     <groupId>org.mortbay.jetty</groupId> 
     <artifactId>jetty-maven-plugin</artifactId> 
     <version>7.0.0.pre5</version> 
     <configuration> 
      <systemProperties> 
      <systemProperty> 
       <name>logback.configurationFile</name> 
       <value>./src/etc/logback.xml</value> 
      </systemProperty> 
      </systemProperties> 
     </configuration> 
     <dependencies> 
      <dependency> 
      <groupId>ch.qos.logback</groupId> 
      <artifactId>logback-classic</artifactId> 
      <version>0.9.15</version> 
      </dependency> 
     </dependencies> 
     </plugin> 
     ... 
    </plugins> 
    </build> 
    ... 
</project> 

然後添加一個src/etc/logback.xml配置文件。以下最低配置:

<configuration> 
    <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender"> 
    <layout class="ch.qos.logback.classic.PatternLayout"> 
     <Pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</Pattern> 
    </layout> 
    </appender> 

    <root level="debug"> 
    <appender-ref ref="STDOUT"/> 
    </root> 
</configuration> 

採用這種設置,碼頭將輸出調試消息:

 
$ mvn jetty:run 
... 
00:31:33.089 [main] DEBUG org.mortbay.log - starting [email protected] 
00:31:33.089 [main] DEBUG org.mortbay.log - started [email protected] 
00:31:33.105 [main] DEBUG org.mortbay.log - starting [email protected] 
00:31:33.106 [main] DEBUG org.mortbay.log - started [email protected] 
00:31:33.106 [main] DEBUG org.mortbay.log - starting [email protected] 
00:31:33.106 [main] DEBUG org.mortbay.log - started [email protected] 
00:31:33.106 [main] DEBUG org.mortbay.log - starting [email protected] 
00:31:33.174 [main] DEBUG org.mortbay.log - started [email protected] 
00:31:33.216 [main] INFO org.mortbay.log - Started [email protected]:8080 
00:31:33.217 [main] DEBUG org.mortbay.log - started [email protected]:8080 
00:31:33.217 [main] DEBUG org.mortbay.log - started [email protected] 
[INFO] Started Jetty Server 

資源:

+0

謝謝,帕斯卡。我只看到了答案的第一個版本,所以花了我一段時間才接受它。我不記得我想要做什麼,但如果它再次出現,我一定會回顧一下。 – wds 2010-11-10 14:33:55

11

爲了延長帕斯卡的答案,這是它如何與log4j的工作原理:

<project> 
    ... 
    <build> 
    ... 
    <plugins> 
     <plugin> 
     <groupId>org.mortbay.jetty</groupId> 
     <artifactId>jetty-maven-plugin</artifactId> 
     <version>7.0.0.pre5</version> 
     <configuration> 
      <systemProperties> 
      <systemProperty> 
       <name>log4j.configurationFile</name> 
       <value>file:${project.basedir}/src/test/resources/log4j.properties</value> 
      </systemProperty> 
      </systemProperties> 
     </configuration> 
     <dependencies> 
      <dependency> 
      <groupId>log4j</groupId> 
      <artifactId>log4j</artifactId> 
      <version>1.2.16</version> 
      </dependency> 
      <dependency> 
      <groupId>org.slf4j</groupId> 
      <artifactId>slf4j-api</artifactId> 
      <version>1.6.1</version> 
      </dependency> 
      <dependency> 
      <groupId>org.slf4j</groupId> 
      <artifactId>slf4j-log4j12</artifactId> 
      <version>1.6.1</version> 
      </dependency> 
     </dependencies> 
     </plugin> 
     ... 
    </plugins> 
    </build> 
    ... 
</project> 

這是您的${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 

其他資源:

+0

系統屬性log4j.configurationFile不適用於我,但是log4j.configuration。 – 2012-10-08 15:57:50

+0

對於log4j的1.2.16 Maven的3我不得不去爲' \t \t \t \t \t \t \t log4j的。配置 \t \t \t \t \t \t \t $ {project.baseUri} /src/test/resources/log4j.properties \t \t \t \t \t \t' – 2013-06-16 18:24:58

0

我覺得這個解決方案更加方便

<resources> 
     <resource> 
      <directory>${project.basedir}/src/main/resources</directory> 
      <targetPath>${project.build.outputDirectory}</targetPath> 
      <includes> 
       <include>log4j.properties</include> 
      </includes> 
     </resource> 
    </resources> 

也不要忘記粘貼

<overwrite>true</overwrite> 

for resources plug在

2

爲了擴大帕斯卡和yegor256的答案,這是它如何與SLF4J Simple logger工作(這是最簡單的選擇,因爲你只需要一個依賴添加到slf4j-simple):

<project> 
    ... 
    <build> 
    ... 
    <plugins> 
     <plugin> 
     <groupId>org.mortbay.jetty</groupId> 
     <artifactId>jetty-maven-plugin</artifactId> 
     <version>7.0.0.pre5</version> 

     <dependencies> 
      <dependency> 
       <groupId>org.slf4j</groupId> 
       <artifactId>slf4j-simple</artifactId> 
       <version>1.7.5</version> 
      </dependency> 
     </dependencies> 
     </plugin> 
     ... 
    </plugins> 
    </build> 
    ... 
</project> 

它可以配置直接來自Maven pom的SLF4J Logger。默認在http://www.slf4j.org/apidocs/org/slf4j/impl/SimpleLogger.html描述)

例如,登錄到一個文件/tmp/output.log具有較高的調試級別(TRACE):

<configuration> 
    <systemProperties> 
     <systemProperty> 
     <name>org.slf4j.simpleLogger.logFile</name> 
     <value>/tmp/output.log</value> 
     </systemProperty> 
     <systemProperty> 
     <name>org.slf4j.simpleLogger.defaultLogLevel</name> 
     <value>trace</value> 
     </systemProperty> 
    </systemProperties> 
</configuration>