2011-11-15 16 views
6

Używam Log4j w mojej aplikacji i niektóre dodatki do debugowania i błędu. Testowałem to na tomcat i działałem dobrze. Generowanie wszystkich dzienników w odpowiednich plikach. Ale kiedy wdrażam kod na WAS6.1, wszystkie logi są generowane tylko wewnątrz SystemOut.log.Websphere wszystkie logi idą do SystemOut.log

Proszę pomóc!

+0

Będzie dobrze, jeśli załączysz jakiś kod. Używam websphere i wszystkie moje logi w oddzielnym pliku dziennika. –

+0

Czy używasz jakiejś elewacji do pozyskiwania drewna, takiej jak rejestracja wspólnot? Jeśli tak, powinieneś zmienić kolejność ładowania klas na parent-last. – szhem

+0

Nie musisz robić parent-last, a ponieważ ma inne efekty, uniknęłbym go, jeśli to możliwe. – dbreaux

Odpowiedz

8

Problem może polegać na tym, że produkt WebSphere 6.1 wykorzystuje wewnętrznie logowanie Jakarta Commons (JCL), a jeśli któryś z twoich kodów lub bibliotek innych firm również korzysta z JCL, konfiguracja WebSphere powoduje konflikty z twoją aplikacją próbującą użyć log4j. Jeśli tak się stanie, zobaczysz dokładnie to, co widzisz.

Istnieje wiele modeli references i blog posts, które opisują sposoby rozwiązania tego problemu. Najłatwiejszym do utworzenia plikiem o nazwie org.apache.commons.logging.LogFactory jest katalog META-INF/services Twojej aplikacji internetowej (w katalogu głównym archiwum WAR). Plik ten musi zawierać linię:

org.apache.commons.logging.impl.Log4jFactory 

(Przynajmniej z nowszymi wersjami WebSphere ...) Innym kluczowym jest to, że jar JCL muszą być ładowane z tej samej lokalizacji co słoik log4j. na przykład zarówno z WEB-INF/lib lub obu z biblioteki współdzielonej. W związku z tym nie można cofnąć się po załadowaniu JCL z kopii dostarczonej przez WebSphere. Jeśli są one ładowane przez different classloaders, nie mogą poprawnie się widzieć.

Powiązane problemy