plugin mkyong for jetty slf4j maven-jetty-plugin

mkyong - jetty server version



¿Configurar el registro para el complemento Maven de Jetty? (2)

Estoy invocando el objetivo "jetty: run" con la siguiente configuración de plugin:

<plugin> <groupId>org.mortbay.jetty</groupId> <artifactId>jetty-maven-plugin</artifactId> <version>7.4.4.v20110707</version> <configuration> <scanIntervalSeconds>5</scanIntervalSeconds> <connectors> <connector implementation="org.eclipse.jetty.server.nio.SelectChannelConnector"> <port>80</port> </connector> </connectors> </configuration> </plugin>

Jetty se niega a registrar cualquier cosa en slf4j a pesar de que mi proyecto declara a slf4j como una dependencia. Si paso "-Dorg.eclipse.jetty.util.log.DEBUG = true" a la JVM, Jetty genera toneladas de registros pero parecen ir a stderr en lugar de a slf4j. ¿Algunas ideas?


Extendiendo un poco la respuesta de Gili; usar las propiedades-maven-plugin es una forma conveniente de establecer las propiedades del sistema en lugar de tener que especificarlas en la línea de comandos. Proporciono ejemplos para logback y log4j. Agregue este bloque de plugin a su pom.xml además de la configuración de jetty-maven-plugin en la respuesta de Gili.

Volver a iniciar sesión:

<plugin> <groupId>org.codehaus.mojo</groupId> <artifactId>properties-maven-plugin</artifactId> <version>1.0-alpha-2</version> <executions> <execution> <goals> <goal>set-system-properties</goal> </goals> <configuration> <properties> <!-- makes jetty log the exception if it fails to initialize slf4j --> <property> <name>org.eclipse.jetty.util.log.IGNORED</name> <value>true</value> </property> <!-- Location of logback config --> <property> <name>logback.configurationFile</name> <value>/path/to/logback.xml</value> </property> </properties> </configuration> </execution> </executions> </plugin>

Log4j:

<plugin> <groupId>org.codehaus.mojo</groupId> <artifactId>properties-maven-plugin</artifactId> <version>1.0-alpha-2</version> <executions> <execution> <goals> <goal>set-system-properties</goal> </goals> <configuration> <properties> <!-- makes jetty log the exception if it fails to initialize slf4j --> <property> <name>org.eclipse.jetty.util.log.IGNORED</name> <value>true</value> </property> <!-- this tells where the log4j configuration is --> <property> <name>log4j.configuration</name> <value>file:./src/main/resources/log4j.properties</value> </property> <!-- this can be uncommented to debug startup log4j itself, e.g. how it locates log4j.properties etc --> <!-- <property> <name>log4j.debug</name> <value></value> </property> --> </properties> </configuration> </execution> </executions> </plugin>

También para log4j, naturalmente use la siguiente dependencia para el complemento jetty-maven en lugar de logback-classic:

<plugin> <groupId>org.mortbay.jetty</groupId> <artifactId>jetty-maven-plugin</artifactId> ... <dependencies> <dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-log4j12</artifactId> <version>1.6.4</version> </dependency> </dependencies> </plugin>


Respondiendo a mi propia pregunta:

  1. Los complementos no ven las dependencias del proyecto. Debe especificar <dependencies> dentro de <plugin> .

  2. Debe especificar una implementación concreta de slf4j, como logback. Especificar slf4j no es suficiente.

El resultado final debería ser algo como esto:

<plugin> <groupId>org.mortbay.jetty</groupId> <artifactId>jetty-maven-plugin</artifactId> <version>7.4.4.v20110707</version> <configuration> <scanIntervalSeconds>5</scanIntervalSeconds> <connectors> <connector implementation="org.eclipse.jetty.server.nio.SelectChannelConnector"> <port>80</port> </connector> </connectors> </configuration> <dependencies> <dependency> <groupId>ch.qos.logback</groupId> <artifactId>logback-classic</artifactId> <version>0.9.29</version> </dependency> </dependencies> </plugin>