2009-06-19 14 views
7

Mam uruchomione niektóre testy JUnit w środowisku Eclipse, a mój kod generuje plik dziennika XML przy użyciu interfejsów API rejestrowania w języku Java. (java.util.logging). Czy istnieje prosty sposób wyświetlania tego pliku dziennika XML w środowisku Eclipse, poza odczytaniem surowego kodu XML? W szczególności chcę móc łatwo zobaczyć, z jakich wątków pochodzą różne komunikaty dziennika.Jak wyświetlić pliki dziennika Java w Eclipse

Odpowiedz

0

Nie widzę, jak Eclipse może wiedzieć o twoich wątkach. Jeśli jest to XML, musisz napisać analizator składni, który może znaleźć twoje wiadomości wątku za pomocą XPath i wydrukować je. Ale to zależy od ciebie - Eclipse nie może odczytać twojego umysłu.

Będziesz musiał znaleźć arkusz stylów XSL-T, który może pobrać strumień XML wyprodukowany przez log4j i wyciągnąć żądane wątki.

+0

Nić jest częścią wyjściu java.util.logging. Zobacz http://java.sun.com/j2se/1.4.2/docs/guide/util/logging/overview.html#2.4 –

1

Zawsze miałem nadzieję, że znajdę coś w rodzaju Apache Chainsaw dla kombinacji java.util.logging/Eclipse, tj. Przeglądarkę dziennika w Eclipse, która nasłuchuje na port i wpisuje implementację java.util.logging.Handler bezpośrednio do tego. Ale jeszcze nie znalazłem czegoś takiego i nie chciałem też pisać. Do tej pory używam odpowiedniego formatu zwykłego tekstu, aby zalogować się do konsoli. Nie jest elegancka i nie ma wygodnych opcji filtrowania, ale spełnia swoją rolę. Pisanie własnego formatera nie jest wcale trudne.

Istnieje wsparcie dla analizy plików dziennika w Eclipse's Test and Performance Tools Platform Project (nazwa jest jeszcze gorsza niż akronim). Nigdy tego nie próbowałem, ale może ci się przydać.

+0

Peter, zobacz moją notatkę na temat SLF4J/Logback. Tak właśnie działa, choć Thorbjørn zwraca uwagę na błąd występujący podczas korzystania z aktualnej wersji logback (Ceki mówi, że pracuje nad rozwiązaniem). –

+0

Zdecydowanie wolę coś, co nie dodaje zależności do mojego kodu produkcyjnego. Zwłaszcza SLF4J wypalił mnie już dzięki niekompatybilnym zmianom API między wydaniami punktowymi, powodując problemy jako pośrednie zależności jednego z moich projektów opartych na Maven. java.util.logging może nie być doskonały, ale nadal nie widzę uzasadnienia dla dodatkowych kosztów i ryzyka wprowadzonego przez alternatywy. –

1

Z boku, doskonałym narzędziem do przeglądania plików dziennika w czasie rzeczywistym jest baretail (zasadniczo ogon -f w systemie Windows), ale można go ustawić, aby podświetlić pewne wzory w kolorze, które naprawdę mogą pomóc. Możesz znaleźć bezpłatną wersję here.

+0

dzięki za link – akf

1

W zależności od tego, co dokładnie próbujesz zrobić, może być potrzebna dobra konfiguracja rejestrowania dla subskrypcji rejestrowania?

Ramy Używam niedawno używa slf4j zalogować, podając następujące log4j config mogę zobaczyć, które podaje moc co:

log4j.rootLogger = trace, default 
log4j.appender.default = org.apache.log4j.ConsoleAppender 
log4j.appender.default.layout = org.apache.log4j.PatternLayout 
log4j.appender.default.layout.ConversionPattern = %-4r [%t] %-5p %c %x - %m%n 

W moim przypadku uzyskać wynik podobny do następującego zakładka Console w czasie zaćmienia, gdy uruchamiam moje testy dla junitów.

0 [pool-1-thread-1] INFO com.example.BaseTest - Server listening on port 9090 
35 [NioProcessor-6] INFO org.apache.mina.filter.logging.LoggingFilter - CREATED 
35 [NioProcessor-1] INFO org.apache.mina.filter.logging.LoggingFilter - CREATED 
4

Używam API SLF4J rejestrowania w połączeniu z wdrożeniem Logback rejestrowania. SLF4J można skonfigurować do mapowania komunikatów dziennika w java.util.logging, log4j, jakarta commons logging i API SLF4j we wspólną pośrednią formę. Z drugiej strony wiadomości mogą być generowane za pośrednictwem java.util.logging, log4j lub Logback. Jest to elastyczne podejście, które działa dobrze, zwłaszcza gdy masz komponenty korzystające z różnych interfejsów API do rejestrowania.

Jedną z zalet Logback jest to, że można skonfigurować wysyłanie kopii komunikatów dziennika na numer Eclipse plug-in. Wtyczka i pozwala przeglądać i filtrować plik dziennika na różne sposoby. Wiadomości zawierają wątek, który je wygenerował, więc brzmi to jak coś, co powinieneś sprawdzić.

+0

wtyczka nie działa z najnowszą wersją logback. –

+0

To prawda, chociaż trwają prace nad nową i ulepszoną wersją. – Ceki

2

Myślę, że szukałeś tego samego, czego szukałem. Znalazłem UtilLogger4E, ale zacząłem swój własny projekt (EDevTools LogViewer), ponieważ ma on kilka brakujących funkcji i nie jest opensource.

Posiada zdolność do odczytu Java Util Logowania dzienników XML z pliku lub konfigurowalnego gniazda, wyświetlanie ich w kolorze na podstawie poziomu w tabeli i może pokazywać więcej niż jeden dziennik na raz (przez wiele instancji widoku).

Rejestrowanie Java Util ma wbudowaną funkcję wysyłania logów do gniazda (SocketHandler), musi być ustawiona tylko przez plik konfiguracyjny.

Można przyjrzeć LogViewer w: http://sourceforge.net/projects/edevtools/

2

Jeśli chcesz użyć widza dziennika, który nie jest oparty na Eclipse, polecam OtrosLogViewer. Mogę zaimportować format XML java.util.logging i SimpleFormat.

Zastrzeżone: Jestem autorem OtrosLogViewer

Powiązane problemy