2012-05-23 2 views
15

Sto usando il plugin Tomcat7 Maven:Configurazione della registrazione di un Tomcat incorporato da plug-Maven

<plugin> 
      <groupId>org.apache.tomcat.maven</groupId> 
      <artifactId>tomcat7-maven-plugin</artifactId> 
      <version>2.0-beta-1</version> 
      <configuration> 
        <update>true</update> 
        <contextFile>${basedir}/conf/context.xml</contextFile> 
        <tomcatUsers>${basedir}/conf/tomcat-users.xml</tomcatUsers> 
      </configuration> 
</plugin> 

corro la mia app come segue (che corre Tomcat incorporato)

mvn tomcat7: run

IL PROBLEMA: non esiste un file di registro catalina.out?

Desidero attivare la registrazione per i Regni in modo da poter eseguire il debug di qualcosa. Nella directory ./target/tomcat/log c'è solo access_log. * Nessun altro file di registro.

Ho provato a utilizzare il file ./target/tomcat/conf/logging.properties senza alcun risultato.

Come posso configurare la registrazione per questo Tomcat?

+0

grande domanda. Credo che ci sia un bug reale che impedisce la creazione dei log. Per me, l'unico file di registro che ottengo nella cartella 'tomcat/logs' è' access.log'. Non riesco ad ottenere gli altri registri, come ad esempio 'catalina.out' log, ecc. – djangofan

risposta

0

Provare a utilizzare

<tomcatLoggingFile>log.txt</tomcatLoggingFile> 

nella sezione di configurazione.

+1

questo è dove si specifica un logging.properties alternativo, non il nome del file di log da generare –

7

Ho trovato la soluzione, è necessario descrivere le dipendenze aggiuntive della libreria di registrazione. Nel mio caso il suo logback, se usi log4j, semplicemente cambia le dipendenze. Funziona ... di seguito la mia configurazione:

 <plugin> 
      <groupId>org.apache.tomcat.maven</groupId> 
      <artifactId>tomcat7-maven-plugin</artifactId> 
      <version>2.1</version> 
      <configuration> 
       <path>/myapp</path> 
       <extraDependencies> 
        <dependency> 
         <groupId>org.slf4j</groupId> 
         <artifactId>slf4j-api</artifactId> 
         <version>1.7.2</version> 
        </dependency> 
        <dependency> 
         <groupId>org.slf4j</groupId> 
         <artifactId>jul-to-slf4j</artifactId> 
         <version>1.7.2</version> 
        </dependency> 
        <dependency> 
         <groupId>ch.qos.logback</groupId> 
         <artifactId>logback-classic</artifactId> 
         <version>1.0.7</version> 
        </dependency> 
        <dependency> 
         <groupId>ch.qos.logback</groupId> 
         <artifactId>logback-core</artifactId> 
         <version>1.0.7</version> 
        </dependency> 
       </extraDependencies> 
      </configuration> 
     </plugin> 
0

La configurazione di registrazione per embedded Tomcat Maven è attualmente rotto a causa di bug

https://issues.apache.org/jira/browse/MTOMCAT-127

La soluzione è di reindirizzare semplicemente lo stdout, come:

mvn tomcat7:run 2>&1 | tee catalina.out 
0

La mia soluzione è,

  String logBackfile ="....."; //the logback config 
      LoggerContext lc = new LoggerContext(); 

      JoranConfigurator configurator = new JoranConfigurator(); 
      configurator.setContext(lc); 
      lc.reset(); 
      configurator.doConfigure(logBackfile); 
      StatusPrinter.printInCaseOfErrorsOrWarnings(lc); 
0

Questa è solo una risposta parziale, ma ho funzionato in questo modo, dove la mia app contiene le sue dipendenze di logback (non è necessario dichiarare extraDependencies).

L'unica avvertenza è che non riesco ancora ad ottenere l'output catalina.log Tomcat di cui ho bisogno quando si verifica un errore di livello inferiore nella mia applicazione (prima che l'app venga caricata e/o altro). Con questa configurazione, ho solo il mio file di log a livello di applicazione (non i logs/catalina.out che voglio davvero):

<plugin> 
    <groupId>org.apache.tomcat.maven</groupId> 
    <artifactId>tomcat7-maven-plugin</artifactId> 
    <version>2.2</version><!-- Tomcat 7.0.47 --> 
    <configuration> 
     <port>9090</port> 
     <path>/${project.artifactId}</path> 
     <systemProperties> 
      <spring.profiles.active>webService</spring.profiles.active> 
      <java.util.logging.config.file>src/integration-test/resources/logback.xml</java.util.logging.config.file> 
     </systemProperties> 
    </configuration> 
    <executions> 
     <execution> 
      <id>tomcat-run</id> 
      <goals> 
       <goal>run-war-only</goal> 
      </goals> 
      <phase>pre-integration-test</phase> 
      <configuration> 
       <fork>true</fork> 
      </configuration> 
     </execution> 
     <execution> 
      <id>tomcat-shutdown</id> 
      <goals> 
       <goal>shutdown</goal> 
      </goals> 
      <phase>post-integration-test</phase> 
     </execution> 
    </executions> 
</plugin>