2010-10-15 16 views
20

Nie mogę ustawić poziomu rejestrowania logowania Java. Używam maven surefire (test mvn) i próbuję dostosować domyślne INFO do np. NAJLEPSZA.Poziom rejestrowania pod maven surefire

mam złożyć logging.properties pod src/test/resources/logging.properties

po kompilacji, widzę pod docelowych/klas testowych, widzę plik logging.properties z zamierzonym config:

java.util.logging.ConsoleHandler.level = finest

javax.enterprise.system.container.ejb.level = Fine

...

Jednak dane wyjściowe konsoli Glassfish zawierają tylko komunikaty poziomu INFO/SEVERE.

Gdzie popełniłem błąd? czy to inny ból w tyłku z mavenem?

+0

Jestem trochę zdezorientowany. W jaki sposób szklane pasują do tego? Myślę, że prawdopodobnie zaczynasz się mylić między rejestracją Glassfisha a logowaniem testów jednostkowych. Jakie ramy są używane do tworzenia logów? – drekka

+0

debuguję test jednostki, który używa kontenera Embedded w programie Glassfish v3. zgodnie z: http://forums.java.net/jive/thread.jspa?messageID=395759, w odpowiedzi przez "Marina Vatkina", to klucz do wyjścia FINE wiadomości dla kontenera EJB ... Myślę, że moje pytanie jest czy moja konfiguracja jest poprawna dla rejestrowania Java Java? Czy jest potrzebna dodatkowa konfiguracja? - nie tylko dla tej konkretnej instancji, ale powiedzmy, że mam klasę com.something.Main, i chcę wyprowadzić dla nich NAJNOWSZE wiadomości ... – Dzhu

Odpowiedz

8

Musisz określić swoje programy obsługi w pliku rejestrowania

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

wtedy powinno działać

3

Wygląda na to jej nie możliwe jeszcze pod Maven ?:

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

Również kiedy skonfigurować pom użyć niestandardowego pliku właściwości java.util.logging następująco:

<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> 
    ... 

logowanie znika ...

+0

Mam tylko rejestrowanie, które mogę kontrolować, jeśli określę lokalizację rejestrowania. plik właściwości z właściwością systemową. Twój sposób wyrażania właściwości działa dla mnie, podobnie jak "src/test/resources/logging.properties". – sjlevin

3

spróbować

${build.testOutputDirectory}/logging.properties 

również określić te rzeczy w wierszu poleceń z surfire-args.

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

Próbowałem ustawienie java.util.logging.config.file w zmiennej środowiskowej MAVEN_OPTS, który nie działa, ale w końcu to działa przez wprowadzanie tego systemu własności w pom.xml (i oczywiście stworzenie odpowiednie logging.properties w src/test/Zasoby):

<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

Ustawienie '-Djava.util.logging.config.file' na linii poleceń maven nie działa dla mnie, ale tak się stało. – sjlevin

+0

Ponieważ wtyczka surefire nie propaguje wszystkich właściwości systemu, które przekazałeś do maven, linii poleceń do rzeczywistego testera testów jednostkowych –

1

szukałem w dokładnym tego problemu, ale nie chcą zmiany plik konfiguracyjny projektu (pom.xml) za każdym razem muszę konkretnego na rejestrowanie test.

Właściwość -D działa z linii poleceń maven.

W ten sposób można wybrać plik konfiguracyjny rejestrowanie z wiersza poleceń:

mvn -Djava.util.logging.config.file=`enter filename here` test 

Jeśli używasz ogólny poziom mianownik .level=FINEST mieć świadomość, że rejestrowanie 3rd party pojawi się również na tym poziomie.

Aby wyłączyć lub ustawić rejestrowanie maven lub 3rd party na określony poziom, należy użyć jawnego poziomu logu dla tych klas w wybranym pliku konfiguracji dziennika.

mam dużo wierszy dziennika z 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 

Więc dodam:

com.google.inject.level=INFO 

do pliku. Pamiętaj, że ustawienie poziomu jest rekurencyjne dla wszystkich podklas. Tak więc com.level=NONE wyłączy wszystkie rejestracje dla wszystkich rejestratorów z domeny com.

Połączenie tego z funkcją testu wyboru -Dtest=... w wtyczce murowanej opisanej here jest bardzo dobre do izolowania błędów i błędów.

Powiązane problemy