Chcę używać dzienników w moim programie. Słyszałem o logowaniu java.util.log , ale nie wiem jak zacząć.
Czy są jakieś przykłady tego, co mogę zrobić z logowaniem? Jak korzystać z logowania w swoim własnym programie?
java
logging
java.util.logging
Renato Dinhani
źródło
źródło
Odpowiedzi:
java.util.logging
powstrzymuje Cię od konieczności dodawania jeszcze jednego pliku jar do Twojej aplikacji i działa dobrze z dobrym Formatter.Ogólnie rzecz biorąc, na szczycie każdej klasy powinieneś mieć:
Następnie możesz po prostu korzystać z różnych udogodnień klasy Logger .
Użyj
Level.FINE
do wszystkiego, co debuguje na najwyższym poziomie przepływu wykonania:Użyj
Level.FINER
/Level.FINEST
wewnątrz pętli i w miejscach, w których nie zawsze trzeba widzieć tyle szczegółów podczas debugowania podstawowych problemów z przepływem:Skorzystaj ze sparametryzowanych wersji funkcji rejestrowania, aby nie generować ton śmieci konkatenacji ciągów, które GC będzie musiał nadążać.
Object[]
jak wyżej jest tanie, zwykle przydział stosu.W przypadku obsługi wyjątków zawsze rejestruj pełne szczegóły wyjątku:
Zawsze
ex.toString()
przekazuję tutaj tę wiadomość, ponieważ wtedy, gdy „grep -n
” za „Exception
” w plikach dziennika, również widzę wiadomość. W przeciwnym razie znajdzie się on w następnym wierszu danych wyjściowych wygenerowanych przez zrzut stosu i musisz mieć bardziej zaawansowany RegEx, aby dopasować również ten wiersz, co często zapewnia większą wydajność, niż trzeba przeglądać.źródło
.fine()
metody rejestrowania, ale nie mogę sprawić, by komunikaty były wyświetlane ...Powinien zadeklarować rejestrator w następujący sposób:
więc jeśli zmienisz nazwę swojej klasy, pojawi się ona.
Napisałem artykuł o java loggerze z przykładami tutaj .
źródło
Istnieje wiele przykładów, a także różnego rodzaju rejestrowania. Spójrz na pakiet java.util.logging .
Przykładowy kod:
Bez sztywnego kodowania nazwy klasy :
źródło
Main.class.getSimpleName()
? W ten sposób narzędzie refaktoryzacyjne zmieni je odpowiednio, jeśli zajdzie taka potrzeba, a jednak nie jest tak niezgrabne jak twoje drugie rozwiązanie.SLF4J jest lepszą fasadą logowania niż rejestrowanie Apache Commons (ACL). Ma pomosty z innymi strukturami rejestrowania, dzięki czemu bezpośrednie połączenia z ACL, Log4J lub Java Util Logging przechodzą przez SLF4J, dzięki czemu można kierować wszystkie dane wyjściowe do jednego pliku dziennika, jeśli chcesz, za pomocą tylko jednego pliku konfiguracji dziennika. Dlaczego Twoja aplikacja korzysta z wielu ram rejestrowania? Ponieważ prawdopodobnie używane są biblioteki innych firm, zwłaszcza starsze.
SLF4J obsługuje różne implementacje rejestrowania. Może wysyłać wszystko do standardowego wyjścia, używać Log4J lub Logback (zalecane w porównaniu z Log4J).
http://www.slf4j.org/
http://logback.qos.ch/
źródło
Osobiście użyłbym minloga . Jest to niezwykle proste, ponieważ klasa rejestrująca zawiera kilkaset wierszy kodu.
źródło
Sugerowałbym, abyś używał wspólnego narzędzia do rejestrowania Apache. Jest wysoce skalowalny i obsługuje osobne pliki dziennika dla różnych programów rejestrujących. Zobacz tutaj .
źródło