2011-11-10 3 views
8

Je veux utiliser la journalisation de logback avec maven-jetty-plugin. Apparemment, la propriété système logback.configurationFile est lue après maven-jetty-plugin est démarré et a initialisé slf4j, ainsi le fichier ./src/test/resources/logback.xml n'est pas lu par jetty. Par conséquent, tous les messages de journal sont définis sur le niveau de débogage et sont imprimés dans la console (configuration de consignation par défaut). Lancer maven avec -Dlogback.configurationFile = ... résout le problème. Cependant, je préférerais placer la propriété dans le pom comme c'est possible avec log4j et maven-jetty-plugin. Des idées ?logback logging avec maven-jetty-plugin

Voici mon 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> 
... 

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

Répondre

3

En utilisant l'ancienne maven-jetty-plugin plutôt que les œuvres jetty-maven-plugin pour moi:

<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

Belle et propre réponse. À titre de comparaison, je fais quelque chose de similaire en utilisant Gradle: http://thegreenoak.blogspot.com/2013/02/using-slf4j-and-logback-with-gradle.html – djangofan

2

J'ai rencontré ce même problème. Pour contourner le problème, j'ai utilisé slf4j-simple à la place du logback. Slf4j-simple a une configuration par défaut définie au niveau INFO, mais elle n'est pas configurable dans le cas contraire, elle peut donc ne pas répondre à vos besoins. Dans la configuration de plug-in, remplacez logback-classic avec:

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

Il fonctionne avec la jetée 9 et la jetée-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

vous pouvez utiliser les propriétés 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> 

Documentation: http://mojo.codehaus.org/properties-maven-plugin/usage.html
Ce n'est pas parfait, mais cela devrait fonctionner.