Logging-Ebene unter Maven todsichere
Frage
Ich bin nicht in der Lage Java-Protokollierung der Protokollierungsstufe einzustellen. Ich verwende Maven todsichere (MVN-Test), und zu versuchen, von der Standard-INFO einzustellen, um z FINEST.
Ich habe logging.properties Datei unter src / test / resources / logging.properties
nach der Kompilierung, siehe i unter Ziel / Test-Klassen, ich sehe eine logging.properties Datei mit der beabsichtigten config:
java.util.logging.ConsoleHandler.level = FINEST
javax.enterprise.system.container.ejb.level = FINE
...
jedoch die Konsolenausgabe von Glasfischen nur INFO / SCHWERE Level-Nachrichten hat.
Wo habe ich falsch gemacht? oder ist dies ein weiterer Schmerz im Hintern, was mit Maven?
Lösung
Sie benötigen Handler in der Logging-Datei angeben
handlers = java.util.logging.ConsoleHandler, java.util.logging.FileHandler
dann sollte es funktionieren
Andere Tipps
habe ich versucht, java.util.logging.config.file in der MAVEN_OPTS Umgebungsvariable, die nicht funktioniert, aber schließlich habe es funktioniert durch diese Systemeigenschaft in der pom.xml setzen (und natürlich auch eine entsprechende logging.properties Schaffung in src / test / resources):
<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>
Versuch
${build.testOutputDirectory}/logging.properties
Auch ich gebe dieses Zeug auf der Kommandozeile mit Surfire-args.
<argLine>${surefire.argLine} ${argLine} -Djava.util.logging.config.file=${build.testOutputDirectory}/logging.properties</argLine>
Ich war an genau dieser Frage suchen, aber wollte keine Projektkonfiguration (pom.xml) Dateiänderung für jedes Mal, wenn ich bestimmen Protokollierung auf einem Test benötigen.
Die -D Eigenschaft funktioniert von Maven-Befehlszeile.
So können Sie die Protokollierungskonfigurationsdatei von der Befehlszeile aus:
mvn -Djava.util.logging.config.file=`enter filename here` test
Wenn Sie die allgemeine Ebene Nenner .level=FINEST
verwenden bewusst sein, dass 3rd-Party-Protokollierung auch auf dieser Ebene erscheint.
zu deaktivieren oder die Maven oder 3rd-Party-Protokollierung zu einer bestimmten Ebene Verwendung expliziten Protokollebene Auswahl für die Klassen in der ausgewählten Protokollkonfigurationsdatei festgelegt.
Ich habe eine Menge von Protokollzeilen von 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
Also ich hinzufügen:
com.google.inject.level=INFO
in die Datei. Denken Sie daran, dass die Pegeleinstellung für alle Unterklassen rekursiv ist. So wird com.level=NONE
alle Protokollierung deaktivieren für alle Logger der com
Domäne.
In Kombination mit der Test Select-Funktion -Dtest=...
im todsicheren Plugin beschrieben hier ist sehr gut für Bugs und Fehler zu isolieren.