2009-01-16 6 views
6

Gdzie pracujemy używamy Log4j do rejestrowania aplikacji internetowych. Plik log4j.jar znajduje się na poziomie aplikacji, a nie na poziomie kontenera. Używamy codziennej aplikacji do przesyłania plików. Nasze pliki log4j.properties definiują aplikacje na podstawie nazwy pakietu aplikacji, więc tylko klasy znajdujące się w pakiecie naszej aplikacji i poniżej są rejestrowane w pliku dziennika naszej aplikacji.Strategie logowania do logów aplikacji z kodu biblioteki?

W mojej aplikacji rozszerzam nasz framework o kilka klas pomocniczych. Te klasy nie znajdują się w pakiecie aplikacji, ponieważ nie są one wyłączne dla mojej aplikacji i ostatecznie zostaną przekształcone w bibliotekę słoików do użytku z innymi aplikacjami. Z tego powodu moje instrukcje rejestrowania nie są odbierane przez aplikację mojego append, a zatem nie są rejestrowane w plikach dziennika mojej aplikacji.

Chcę umożliwić klasom w moim słoiku zalogować się do pliku dziennika aplikacji przy użyciu klas. Jeśli jednak utworzę appender w pliku właściwości log4j mojej aplikacji na podstawie moich nazw klas, podejrzewam, że gdy wiele aplikacji używa mojego słoika, z powodu identycznych nazw klas w plikach log4j.properties, tylko jeden plik dziennika aplikacji otrzyma mój słoiki logujące wyciągi, i że otrzyma WSZYSTKIE instrukcje rejestrowania od KAŻDEJ aplikacji używającej tego słoika. Myślę, że tak jest, ponieważ używamy statycznego wywołania Logger.getLogger() w celu odzyskania programu rejestrującego.

Najpierw chcę wiedzieć, czy moje obawy są ważne, czy tak naprawdę stanie się, gdy wiele aplikacji internetowych w tym samym lub różnych pojemnikach jednocześnie będzie używać mojego słoika.

Chciałbym również wiedzieć, czy istnieją "granice", w których to zachowanie się zmienia. Na przykład, czy ten problem istnieje niezależnie od tego, czy plik log4j.jar jest słojem na poziomie kontenera lub słojem na poziomie aplikacji, czy też każdy z kontenerów działa w oddzielnej maszynie JVM?

Na koniec, jeśli tak jest, chciałbym wiedzieć, jakie strategie należy zastosować, aby rozwiązać problem.

Z góry dziękuję!

+0

co pan skończyć się robi? –

Odpowiedz

2

Jeśli log4j.jar jest tylko w aplikacji internetowej, dzienniki pozostaną oddzielne, więc każda aplikacja internetowa powinna mieć własne log4j.jar i log4j.properties, aby wszystkie dzienniki pozostały oddzielne.

+0

Nawet jeśli oba pliki log4j.properties definiują identyczne aplikacje dla klas używanych w moim jarku biblioteki? –

0

Problem polega na tym, że preferowanym wzorcem dla log4j jest użycie metod statycznego * Configuratora, które nie pasują do kontenerów aplikacji.

Ten article rozwiązać ten problem dla mnie, kiedy natknąłem nim ...

Powiązane problemy