2010-03-03 6 views
18

Sto eseguendo una webapp java con un semplice mvn jetty:run, usando l'ultimo plugin jetty, ma non riesco a trovare un modo per dire al molo di inviare messaggi DEBUG alla console (per l'istanza del jetty incorporato, non il plugin stesso). Attualmente sta emettendo solo messaggi WARN e INFO. Ho provato a impostare -DDEBUG e -DVERBOSE, ma non fanno nulla. Ho già dato uno sguardo allo documentation, ma non sembra coprirlo.Abilita il debug di registrazione nel maven jetty 7 plugin

risposta

18

Aggiornamento: OK, finalmente ho funzionato ed ecco cosa ho fatto.

La mia comprensione è che Jetty 7 non ha alcuna dipendenza da un particolare framework di registrazione, anche per il motore JSP poiché Jetty 7 utilizza il motore JSP 2.1. Quindi puoi usare qualsiasi framework di registrazione. Qui userò il logback.

Prima aggiungere logback-classic come la dipendenza nel plugin e impostare la proprietà di sistema logback.configurationFile per puntare su un file di configurazione:

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

quindi aggiungere un file di configurazione src/etc/logback.xml.Di seguito una configurazione minima:

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

Con questa configurazione, molo sarà messaggi di output di debug:

 
$ 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 

Risorse:

+0

Grazie, Pascal. Ho visto solo la prima versione della tua risposta, quindi mi ci è voluto un po 'per accettarlo. Non ricordo cosa volevo fare per questo, ma sarò sicuro di riferire a questo se mai dovesse succedere di nuovo. – wds

11

Per estendere la risposta di Pascal, questo è come funziona con 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> 

Questo è il vostro ${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 

risorse aggiuntive:

+0

La proprietà di sistema log4j.configurationFile non funziona per me, ma log4j.configuration. –

+0

Per log4j 1.2.16 Maven 3 ho dovuto andare per ' \t \t \t \t \t \t \t log4j.configurazione \t \t \t \t \t \t \t $ {} project.baseUri /src/test/resources/log4j.properties \t \t \t \t \t \t ' –

0

trovo questa soluzione più conveniente

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

anche non dimenticare incollare

<overwrite>true</overwrite> 

per spina di risorse in

2

Per estendere la risposta di Pascal e yegor256, questo è come funziona con SLF4J Simple logger (che è l'opzione più semplice in quanto è sufficiente aggiungere una dipendenza a 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> 

E 'possibile configurare il logger SLF4J direttamente da Maven pom. Predefiniti sono descritti in http://www.slf4j.org/apidocs/org/slf4j/impl/SimpleLogger.html)

Per esempio, accedere a un file /tmp/output.log con una maggiore livello di debug (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>