2010-03-03 3 views
18

Ich bin ein Java Webapp mit einem einfachen mvn jetty:run, mit dem neuesten Jetty-Plugin, aber ich kann nicht scheinen, eine Methode zu finden Anlegestelle DEBUG Nachrichten an die Konsole (für die eingebettete Jetty-Instanz, nicht das Plugin selbst). Derzeit werden nur WARN- und INFO-Nachrichten ausgegeben. Ich habe versucht, -DDEBUG und -DVERBOSE Einstellung, aber sie tun nichts. Ich habe mir schon die documentation angesehen, aber das scheint das nicht zu bedecken.Aktivieren Sie Debug Logging in Maven Jetty 7 Plugin

Antwort

18

Update: OK, ich habe endlich die Dinge funktioniert und hier ist, was ich getan habe.

Mein Verständnis ist, dass Jetty 7 keine Abhängigkeiten zu einem bestimmten Logging-Framework hat, auch nicht für die JSP-Engine, da Jetty 7 die JSP 2.1-Engine verwendet. Sie können also jedes Logging-Framework verwenden. Hier werde ich Logback verwenden.

Erste logback-classic als Abhängigkeit im Plugin hinzufügen und die logback.configurationFile Systemeigenschaft auf eine Konfigurationsdatei verweisen auf:

<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> 

Dann eine src/etc/logback.xml Konfigurationsdatei hinzufügen.Unterhalb einer Minimalkonfiguration:

<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> 

Mit dieser Einrichtung Anlegestelle ausgibt DEBUG Meldungen:

 
$ 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 

Ressourcen:

+0

Danke, Pascal. Ich habe nur die erste Version Ihrer Antwort gesehen, deshalb brauchte ich eine Weile, um sie zu akzeptieren. Ich weiß nicht mehr, wofür ich das machen wollte, aber ich werde mich sicher darauf beziehen, wenn es jemals wieder auftaucht. – wds

11

Pascal Antwort zu erweitern, das ist, wie es mit log4j funktioniert:

<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> 

Das ist Ihre ${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 

Zusätzliche Ressourcen:

+0

Die System-Eigenschaft log4j.configurationFile funktioniert nicht für mich, aber log4j.configuration. –

+0

Für log4j 1.2.16 Maven 3 Ich hatte für ' \t \t \t \t \t \t \t log4j zu gehen. Konfiguration \t \t \t \t \t \t \t $ {project.baseUri} /src/test/resources/log4j.properties \t \t \t \t \t \t ' –

0

ich diese Lösung finden bequemer

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

auch nicht vergessen, fügen

<overwrite>true</overwrite> 

für Ressourcen Stecker in

2

Um Pascals und yegor256 Antwort zu erweitern, ist dies, wie es mit SLF4J Simple logger arbeitet (was die einfachste Option ist, da Sie nur eine Abhängigkeit slf4j-simple hinzufügen müssen):

<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> 

Es ist möglich, konfigurieren der SLF4J Logger direkt von Maven pom. Standardwerte werden in http://www.slf4j.org/apidocs/org/slf4j/impl/SimpleLogger.html beschrieben)

So melden Sie sich in eine Datei /tmp/output.log mit höheren Debug-Level (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>