2011-11-10 18 views
8

Quiero usar logback logging con maven-jetty-plugin. Aparentemente, la propiedad del sistema logback.configurationFile se lee después de maven-jetty-plugin se inicia y ha inicializado slf4j, por lo que el archivo ./src/test/resources/logback.xml no se lee por el embarcadero. Como resultado, recibo todos los mensajes de registro configurados en nivel de depuración e impresos en la consola (una configuración de inicio de sesión predeterminada). Lanzar maven con -Dlogback.configurationFile = ... resuelve el problema. Sin embargo, preferiría configurar la propiedad en el pom ya que es posible con log4j y maven-jetty-plugin. Algunas ideas ?logback logging con maven-jetty-plugin

Aquí es mi pom.xml:

... 
<plugin> 
    <groupId>org.mortbay.jetty</groupId> 
    <artifactId>jetty-maven-plugin</artifactId> 
    <version>8.0.4.v20111024</version> 
    <dependencies> 
     <dependency> 
      <groupId>ch.qos.logback</groupId> 
      <artifactId>logback-classic</artifactId> 
      <version>1.0.0</version> 
     </dependency> 
     <dependency> 
      <groupId>org.slf4j</groupId> 
      <artifactId>slf4j-api</artifactId> 
      <version>1.6.1</version> 
     </dependency> 
     </dependencies> 
     <configuration> 
      <systemProperties> 
      <systemProperty> 
       <name>logback.configurationFile</name> 
       <value>./src/test/resources/logback.xml</value> 
      </systemProperty> 
      </systemProperties> 
... 

Y aquí es logback.xml:

<configuration> 

    <appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender"> 
    <file>logFile.log</file> 
    <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> 
     <!-- daily rollover --> 
     <fileNamePattern>logFile.%d{yyyy-MM-dd}.log</fileNamePattern> 
    </rollingPolicy> 

    <encoder> 
     <pattern>%-4relative [%thread] %-5level %logger{35} - %msg%n</pattern> 
    </encoder> 

    </appender> 

    <root level="INFO"> 
    <appender-ref ref="FILE" /> 
    </root> 

</configuration> 

Respuesta

3

Utilizando el mayor maven-jetty-plugin en lugar de las obras jetty-maven-plugin para mí:

<plugin> 
    <groupId>org.mortbay.jetty</groupId> 
    <artifactId>maven-jetty-plugin</artifactId> 
    <version>6.1.26</version> 
    <configuration> 
    <systemProperties> 
     <systemProperty> 
     <name>logback.configurationFile</name> 
     <value>${project.build.outputDirectory}/jetty-logback.xml</value> 
     </systemProperty> 
    </systemProperties> 
    </configuration> 
    <dependencies> 
    <dependency> 
     <groupId>org.slf4j</groupId> 
     <artifactId>slf4j-api</artifactId> 
     <version>1.6.4</version> 
    </dependency> 
    <dependency> 
     <groupId>ch.qos.logback</groupId> 
     <artifactId>logback-classic</artifactId> 
     <version>1.0.0</version> 
    </dependency> 
    </dependencies> 
</plugin> 
+0

Respuesta agradable y limpia. Como comparación, hago algo similar usando Gradle: http://thegreenoak.blogspot.com/2013/02/using-slf4j-and-logback-with-gradle.html – djangofan

2

He encontrado este mismo problema. Como solución alternativa, utilicé slf4j-simple en lugar de logback. El slf4j-simple tiene una configuración predeterminada establecida en el nivel INFO, pero no es muy configurable de lo contrario, por lo que puede o no satisfacer sus necesidades. En la configuración del plugin, reemplace logback-classic con:

 <dependency> 
     <groupId>org.slf4j</groupId> 
     <artifactId>slf4j-simple</artifactId> 
     <version>1.6.4</version> 
     </dependency> 
6

Funciona con embarcadero 9 y el muelle-maven-plugin:

<plugin> 
    <groupId>org.eclipse.jetty</groupId> 
    <artifactId>jetty-maven-plugin</artifactId> 
    <version>${jetty.version}</version> 
    <dependencies> 
    <dependency> 
     <groupId>ch.qos.logback</groupId> 
     <artifactId>logback-classic</artifactId> 
     <version>${logback.version}</version> 
    </dependency> 
    <dependency> 
     <groupId>ch.qos.logback</groupId> 
     <artifactId>logback-access</artifactId> 
     <version>${logback.version}</version> 
    </dependency> 
    <dependency> 
     <groupId>org.slf4j</groupId> 
     <artifactId>slf4j-api</artifactId> 
     <version>${slf4j.version}</version> 
    </dependency> 
    </dependencies> 
    <configuration> 
    <scanIntervalSeconds>10</scanIntervalSeconds> 
    <webAppSourceDirectory>src/main/resources/htdocs</webAppSourceDirectory> 
    <webApp> 
     <descriptor>src/main/webapp/WEB-INF/web.xml</descriptor> 
    </webApp> 
    <systemProperties> 
     <systemProperty> 
     <name>org.eclipse.jetty.util.log.Log</name> 
     <value>org.eclipse.jetty.util.log.Slf4jLog</value> 
     </systemProperty> 
     <systemProperty> 
     <name>logback.configurationFile</name> 
     <value>src/main/resources/logback.xml</value> 
     </systemProperty> 
    </systemProperties> 
    </configuration> 
</plugin> 
3

puede utilizar las propiedades de Maven-Plugin:

<project> 
    <build> 
    <plugins> 
     <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> 
       <property> 
        <name>logback.configurationFile</name> 
        <value>src/test/resources/logback.xml</value> 
       </property> 
       </properties> 
      </configuration> 
      </execution> 
     </executions> 
     </plugin> 
    </plugins> 
    </build> 
</project> 

Documentación: http://mojo.codehaus.org/properties-maven-plugin/usage.html
No es perfecto, pero debería funcionar.