2012-12-18 18 views
11

I registri di traccia e di debug possono essere utili durante lo sviluppo nell'IDE, ma durante la compilazione trovo tali righe piuttosto fastidiose e offuscano il report stampato da altri strumenti di sviluppo.Disattivazione dei log di Log4J durante la fase di prova di Maven

Sarebbe bello avere log4j onorare una proprietà di sistema come -Dlog4j.rootLogger=OFF da usare con Maven o qualcosa che non richiede modifiche sui file di progetto. So che posso specificare il -Dlog4j.configuration=alternateconfig.props ma sto chiedendo qui per scoprire se qualcuno ha trovato un modo più intelligente per disabilitare la registrazione durante il processo di compilazione con un intervento manuale minimo. Cioè Qualche classe java che rileva Maven come chiamante che disabilita log4j o altre soluzioni intelligenti.

Qualche suggerimento?

Note:

[1]: già provato, e non funziona.

[2]: questo è abbastanza buona, ma non sembra funzionare bene con Maven (salta forse infallibili it)

+1

2 * fa * funziona, se aggiorni le opzioni JVM di surefire, ed è la soluzione migliore IMHO – artbristol

+0

@artbristol che sembra promettente. Quindi, sarebbe un'opzione che riguarda solo la build di maven, è esattamente quello che sto cercando. Controllerò questa possibilità al più presto. –

risposta

15

Come spiegato da @artbristol (commento sulla domanda) questo può essere configurato in modo sicuro. Si può fare in questo modo nel pom.xml:

 <plugin> 
      <artifactId>maven-surefire-plugin</artifactId> 
      <version>2.5</version> 
      <configuration> 
       <forkMode>always</forkMode> 
       <systemPropertyVariables> 
        <log4j.configuration>file:${basedir}/etc/log4j-silent.properties</log4j.configuration> 
       </systemPropertyVariables> 
      </configuration> 
     </plugin> 

Poi, avendo il file ${basedir}/etc/log4j-silent.properties con le seguenti impostazioni fa il trucco:

log4j.rootLogger=OFF 

Il log4j viene completamente disattivato durante test viene eseguito in Maven, e tutto funziona normalmente nell'IDE.

Una soluzione migliore sarebbe non avere il file di configurazione aggiuntivo; ma non riesco a trovarlo finora.

+2

Ho usato il tuo metodo silenzioso registrando un file log4j.properties nella mia directory test/resources/con rootLogger = OFF line in esso. Viene copiata nel classpath dei test e ripresa. Nessuna lamentela su nessuna configurazione del logger e nessuna uscita del logger :) – Jazzepi

7

specificare un file di configurazione di prova log4j senza appender.

Ad esempio se si dispone di un log4j.properties in src/main/resources, quindi copiarlo su src/test/resouces e rimuovere l'appender o impostare il livello di registro su mortale.

+2

che disabiliterebbe la registrazione anche nell'IDE (lo fa in IntelliJ IDEA, suppongo che non sia in eclissi) –

2

Sulla base delle risposte precedenti, io uso:

<plugin> 
    <artifactId>maven-surefire-plugin</artifactId> 
    <version>2.5</version> 
    <configuration> 
     <forkMode>always</forkMode> 
     <argLine>-Dlog4j.configuration=</argLine> 
    </configuration> 
</plugin> 

L'uscita Maven mostra un avvertimento circa log4j non essere inizializzato, ma a parte questo sembra funzionare.

Problemi correlati