Livello di registrazione sotto infallibile Maven
Domanda
Sono in grado di regolare il livello di registrazione di registrazione Java. Sto usando Maven infallibile (mvn test), e cercando di registrare dal default INFO per esempio FINEST.
Ho lima logging.properties in src / test / risorse / logging.properties
Dopo la compilazione, vedo sotto di destinazione / test-classi, vedo un file logging.properties con la configurazione prevista:
java.util.logging.ConsoleHandler.level = FINEST
javax.enterprise.system.container.ejb.level = FINI
...
tuttavia l'uscita della console da pesci vetro hanno solo INFO messaggi di livello / grave.
Dove ho sbagliato? o si tratta di un dolore nella cosa culo con Maven?
Soluzione
È necessario specificare i gestori nel file di registrazione
handlers = java.util.logging.ConsoleHandler, java.util.logging.FileHandler
allora dovrebbe lavorare
Altri suggerimenti
Ho provato a fissare java.util.logging.config.file nella variabile di ambiente MAVEN_OPTS, che non funziona ma finalmente ottenuto lavorando mettendo che proprietà di sistema nel pom.xml (e di creare naturalmente un opportuno logging.properties in src / test / risorse):
<plugins>
<plugin>
<artifactId>maven-surefire-plugin</artifactId>
<configuration>
<systemProperties>
<property>
<name>java.util.logging.config.file</name>
<value>src/test/resources/logging.properties</value>
</property>
</systemProperties>
</configuration>
</plugin>
</plugins>
try
${build.testOutputDirectory}/logging.properties
Inoltre, ho specificare questa roba sulla riga di comando con SURFIRE-args.
<argLine>${surefire.argLine} ${argLine} -Djava.util.logging.config.file=${build.testOutputDirectory}/logging.properties</argLine>
I stava guardando questo problema esatto, ma non voleva che una modifica di file di configurazione di progetto (pom.xml) per ogni volta che ho bisogno di registrazione specifica su una prova.
La proprietà -D funziona da linea di comando Maven.
In questo modo è possibile selezionare il file di configurazione di registrazione dalla riga di comando:
mvn -Djava.util.logging.config.file=`enter filename here` test
Se si utilizza il generico livello denominatore .level=FINEST
essere consapevoli del fatto che la registrazione 3a parte apparirà anche a quel livello.
Per disabilitare o impostare l'esperto o registrazione 3a parte ad una selezione livello di registro esplicito uso specifico livello per le classi nel file di configurazione di registro selezionato.
Ho un sacco di linee di log da com.google.inject .....
aug 08, 2014 12:14:33 PM com.google.inject.internal.util.$Stopwatch resetAndLog
FINE: Instance member validation: 3ms
aug 08, 2014 12:14:33 PM com.google.inject.internal.util.$Stopwatch resetAndLog
FINE: Provider verification: 1ms
aug 08, 2014 12:14:33 PM com.google.inject.internal.util.$Stopwatch resetAndLog
FINE: Static member injection: 1ms
Quindi aggiungo:
com.google.inject.level=INFO
per il file. Ricordate che l'impostazione del livello è ricorsivo per tutte le sottoclassi. Così com.level=NONE
disattiverà tutta la registrazione per tutti i logger dal dominio com
.
La combinazione di questo con il test di selezione funzione -Dtest=...
nel infallibile plug descritto qui è molto buono per isolare bug ed errori.