2010-10-15 3 views
20

Non riesco a regolare il livello di registrazione della registrazione java. Sto usando maven surefire (mvn test), e sto provando a regolare da INFO predefinito ad es. FINEST.Livello di registrazione in Maven surefire

devo file con src logging.properties/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 = AMMENDA

...

tuttavia l'uscita della console da glassfish ha solo messaggi di livello INFO/SEVERE.

Dove ho sbagliato? o questo è un altro dolore nella faccenda di Maven?

+0

Sono un po 'confuso qui. Come si inserisce questo pesce? Penso che sia probabile che tu ti stia confondendo tra la registrazione del glassfish e la registrazione del test dell'unità Maven. Quale framework è la build di maven che usa per la registrazione? – drekka

+0

Sto eseguendo il debug di un test unitario che utilizza il contenitore incorporato in glassfish v3. secondo: http://forums.java.net/jive/thread.jspa?messageID=395759, sotto la risposta di "Marina Vatkina", questa è la chiave per inviare messaggi FINE per il contenitore EJB ... Suppongo che la mia domanda sia la mia installazione è corretta per la registrazione java util? O è necessaria una configurazione aggiuntiva? - non solo per questa particolare istanza, ma diciamo che ho una classe com.something.Main, e voglio produrre messaggi FINEST per questo ... – Dzhu

risposta

8

È necessario specificare i gestori nel file di registrazione

handlers = java.util.logging.ConsoleHandler, java.util.logging.FileHandler 

allora dovrebbe funzionare

3

Sembra che la sua non è possibile ancora sotto Maven ?:

http://jira.codehaus.org/browse/MNG-2570

Anche quando ho impostare il pom per utilizzare un file delle proprietà java.util.logging come segue:

<plugin> 
    <groupId>org.apache.maven.plugins</groupId> 
    <artifactId>maven-surefire-plugin</artifactId> 
    <version>2.4.2</version> 
    <configuration> 
    <systemProperties> 
     <property> 
     <name>java.util.logging.config.file</name> 
     <value>${project.build.directory}/test-classes/logging.properties</value> 
     </property> 
    </systemProperties> 
    ... 

la registrazione scompare ...

+0

Ho solo la registrazione che posso controllare se specificano la posizione della registrazione. file di proprietà con una proprietà di sistema. Il tuo modo di esprimere la proprietà funziona per me, così come 'src/test/resources/logging.properties'. – sjlevin

3

provare

${build.testOutputDirectory}/logging.properties 

Inoltre, a specificare questa roba sulla riga di comando con SURFIRE-args.

<argLine>${surefire.argLine} ${argLine} -Djava.util.logging.config.file=${build.testOutputDirectory}/logging.properties</argLine> 
14

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 ovviamente creare un logging.properties appropriate 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> 
+0

L'impostazione '-Djava.util.logging.config.file' sulla riga di comando di maven non ha funzionato per me, ma così è stato. – sjlevin

+0

Perché il plug-in surefire non propaga tutte le proprietà del sistema che hai passato a rendere una riga di comando all'effettivo test executor dell'unità –

1

stavo guardando questo problema esatto, ma non volevo una modifica di file di configurazione di progetto (pom.xml) per ogni volta che hanno bisogno di registrazione specifica su un test.

La proprietà -D funziona dalla riga di comando di maven.

Così si può 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 livello denominatore generica .level=FINEST essere consapevoli del fatto che la registrazione 3a parte apparirà anche a quel livello.

Per disabilitare o impostare la registrazione di terze parti o di terze parti a un livello specifico, utilizzare la selezione del livello di registro esplicito per tali classi nel file di configurazione del 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 

al file. Ricorda che l'impostazione del livello è ricorsiva a tutte le sottoclassi. Pertanto, com.level=NONE disabiliterà tutte le registrazioni per tutti i logger dal dominio com.

Combinare questo con la funzione di selezione di prova -Dtest=... nel plug-in surefire descritto here è molto utile per isolare errori ed errori.