Do jakiego interfejsu mam programować moje nowe zajęcia? loag4j lub slf4j?
Jeśli zamierzasz używać SLF4J, zaprogramuj ten interfejs. Zapewnia największą elastyczność w zakresie implementacji rejestrowania danych. Punkt slf4j ma być interfejsem, który można zaprogramować, więc w przyszłości, jeśli zdecydujesz się przełączyć na, powiedzmy, logback, nie będziesz musiał przepisywać swojego kodu.
Jaki jest preferowany sposób rozmieszczania słoików? umieścić je w mojej wojnie aplikacji lub umieścić je w tomcat libs?
Umieść je w swojej wojnie.
Jedynym powodem (imo) do umieszczenia plików JAR w katalogu libs Tomcat jest sytuacja, w której trzeba załadować bibliotekę macierzystą. Ponieważ Java nie pozwala na załadowanie tej samej natywnej biblioteki z dwóch różnych programów ładujących klasy, musisz umieścić ją we wspólnej lokalizacji. Ale to nie dotyczy tutaj.
Niektórzy uważają katalog lib za sposób na zaoszczędzenie miejsca.To mogło być ważne, gdy maszyny "klasy serwerowej" miały 1 GB pamięci RAM, ale już jej nie ma. Unikanie numeru lib
oznacza, że unikasz większości trudnych do debugowania problemów z klasą.
jakie słoiki muszę zainstalować?
- slf4j-api jest podstawowym API
- trasy slf4j-log4j12 rzeczywista logowania do LOG4J
- JCL-over-slf4j przechwytuje Commons Logging i trasy to poprzez slf4j (do log4j)
- log4j będzie twoim fizycznym szkieletem logowania
Zakładam, że masz już konfigurację Log4J i/lub wygodnie piszesz tę konfigurację. Jeśli nie, i wszystko, co obchodzi ma do czynienia z kodem, który używa Log4J wewnętrznie, nie log4j-over-slf4j
, który przechwyci Log4J nazywa. Następnie musisz wybrać framework, taki jak Logback.
. (Uwaga: I pierwotnie dodane linki do wszystkich tych pakietów, ale nie mają wystarczająco dużo rep do ich zamieszczania Więc here's pojedynczy link do repozytorium Maven ze wszystkimi pakietami slf4j podświetlone)
1. OK, rozumiem, że jeśli umieszczę wszystkie słoiki w mojej wojnie, mam tę wadę, że nie mogę mieć konfiguracji logowania poza wojną i (z automatyczną aktualizacją) manipulować konfiguracją w czasie wykonywania. (To może być raczej pytanie tomcat/log4j_2.0 i powinienem go zapytać w osobnym poście) 3. jak mam zamiar użyć log4j * 2.0 * Zakładam, że potrzebuję log4j-slf4j-impl.jar zamiast slf4j-log4j12 .jar, czy to prawda? – raudi
Nie użyłem log4j 2.0, więc nie wiesz, który JAR implementacji będziesz potrzebować. Ale powinno to być dostępne na stronie SLF4J. – parsifal
Jeśli chodzi o utrzymywanie konfiguracji na zewnątrz, aby można było ją modyfikować w locie: nadal można to zrobić, umieszczając * tylko * plik konfiguracyjny w katalogu lib (i nic w WAR). Zostanie znaleziony przez skanowanie prędkości klasy z WAR. Jednak wolę używać JMX do dostosowywania poziomów rejestrowania. W Log4J 1.2 istnieje komponent bean JMX, a także w wersji 2.0; jeśli go utworzysz, zarejestruje się on za pomocą dostawcy JMX platformy, więc możesz użyć narzędzia takiego jak JConsole, aby uzyskać do niego dostęp. – parsifal