2009-11-12 14 views
52

jakie napotkał następujący błąd:Jak zmienić poziom logu pakietu za pomocą Log4j?

http://issues.apache.org/jira/browse/AXIS2-4363

Stwierdza, co następuje:

Ten błąd występuje tylko wtedy, gdy poziom dziennika dla org.apache.axiom Debug tak obejście jest ustawienie poziomu rejestru> DEBUG.

Moje pytanie brzmi: JAK mam to zrobić? Przeszukałem swoje katalogi w poszukiwaniu pliku właściwości lub czegoś takiego i szukałem czegoś, co mógłbym ustawić w kodzie, ale naprawdę nie mam pojęcia, co robię. Korzystam teraz z aplikacji konsolowej na moim pulpicie, próbując uruchomić to.

Aktualizacja 1: Zauważyłem, że mój katalog Axis2 ma swój własny plik log4j.properties w katalogu głównym. Czy jest to bezpiecznie ignorowane lub jest częścią rozwiązania (lub częścią problemu)?

Aktualizacja 2: Plik log4j.properties poziomu głównego jest nieprawidłowo ustawiony. Teraz wygląda to tak:

log4j.rootLogger=DEBUG, R 
log4j.logger.org.apache.axiom=WARN 
log4j.appender.R=org.apache.log4j.RollingFileAppender 
log4j.appender.R.MaxFileSize=10MB 
log4j.appender.R.MaxBackupIndex=10 
log4j.appender.R.layout=org.apache.log4j.PatternLayout 
log4j.appender.R.layout.ConversionPattern=%p %t %c - %m%n 

ale to widocznie nie tak jak tego kod zwraca „Log poziom jest zerowy”:

System.out.println("Log level is " + logger.getLevel()); 

Na razie jestem ustawiania poziomu log w kodzie za pomocą

Logger logger = Logger.getLogger("org.apache.axiom"); 
logger.setLevel(Level.WARN); 
+0

ciągle mam z tym problemy - Dodałem plik log4j.properties do korzenia app konsoli, ale nie dodając log4j.rootLogger = WARN, R lub log4j.logger.org.apache.axiom = WARN wydaje się robić cokolwiek - pojawia się ten sam błąd co poprzednio. –

Odpowiedz

52

Z którego serwera aplikacji korzystasz? Każdy z nich umieszcza swoją konfigurację rejestrowania w innym miejscu, chociaż większość obecnie używa Commons-Logging jako opakowania wokół Log4J lub java.util.logging.

Opisując Tomcat jako przykład, this document objaśnia opcje konfiguracji logowania przy użyciu dowolnej z tych opcji. W obu przypadkach należy znaleźć lub utworzyć plik konfiguracyjny, który definiuje poziom dziennika dla każdego pakietu i każdego miejsca, w którym system rejestrowania będzie wyświetlał informacje dziennika (zazwyczaj konsola, plik lub db).

W przypadku log4j byłoby plik log4j.properties, a jeśli postępuj zgodnie ze wskazówkami w linku powyżej pliku rozpocznie się patrząc jak:

log4j.rootLogger=DEBUG, R 
log4j.appender.R=org.apache.log4j.RollingFileAppender 
log4j.appender.R.File=${catalina.home}/logs/tomcat.log 
log4j.appender.R.MaxFileSize=10MB 
log4j.appender.R.MaxBackupIndex=10 
log4j.appender.R.layout=org.apache.log4j.PatternLayout 
log4j.appender.R.layout.ConversionPattern=%p %t %c - %m%n 

Najprostszy byłoby zmienić linię :

log4j.rootLogger=DEBUG, R 

Aby coś takiego:

log4j.rootLogger=WARN, R 

Ale jeśli nadal chcesz swoją O WN wyjściowy poziom debugowania z własnych klas dodać wiersz, który mówi:

log4j.category.com.mypackage=DEBUG 

czytania trochę na Log4J i Commons-Logging pomoże zrozumieć to wszystko.

+0

Właśnie próbuję uruchomić kod jako aplikację konsolową. Zobaczę, czy uda mi się ustalić, gdzie powinien się znaleźć plik log4j.properties. Dzięki. –

+1

+1 Dobra informacja, dziękuję –

+3

kategoria jest przestarzała w log4j z rejestratorem – janwen

7

Dziś spotkałem się z tym samym problemem, Ryan.

W moim src (lub root) katalogu, moi log4j.properties plik ma teraz po dodaniu

# https://issues.apache.org/jira/browse/AXIS2-4363 
log4j.category.org.apache.axiom=WARN 

Dzięki za heads-up, jak to zrobić, Benjamin.

3

To praca dla moich:

log4j.logger.org.hibernate.type=trace 

Ponadto można spróbować:

log4j.category.org.hibernate.type=trace 
0

ustawić właściwość systemu log4j.debug = true. Następnie możesz określić, gdzie działa twoja konfiguracja.

2

Właśnie napotkałem problem i nie mogłem ustalić, co się stało, nawet po przeczytaniu wszystkich powyższych informacji i wszystkiego. Co zrobiłem było

  1. Ustaw poziom korzeń rejestrator do WARN
  2. ustawić poziom dziennika pakiet debugowania

Każde wdrożenie zalogowaniu ma swój własny sposób na ustawienie go poprzez właściwościach lub za pomocą kodu (partia pomocy na ten temat)

Niezależnie od powyższego, nie byłoby logów w mojej konsoli lub pliku dziennika. Co ja przeoczył była poniżej ...


enter image description here


Wszystko robiłem z powyższym żonglerki kontrolował tylko produkcję dzienników (w root/pakietu/etc klasie), po lewej stronie czerwonej linii na powyższym obrazku. Ale nie zmieniałem sposobu wyświetlania/zużycia logów tego samego, po prawej stronie czerwonej linii na powyższym obrazku. Handler (konsumpcja) zazwyczaj nie jest domyślnie ustawiony na INFO, dlatego twoje cenne instrukcje debugowania nie zostaną dostarczone. Zużycie/wyświetlanie jest kontrolowane przez ustawienie poziomów dziennika dla Handlerów (ConsoleHandler/FileHandler itp.). Dlatego postanowiłem ustawić poziomy logów dla wszystkich moich programów obsługi na najlepsze i wszystko działało.

Ten punkt nie został precyzyjnie wyjaśniony w żadnym miejscu.

Mam nadzieję, że ktoś, kto drapie się po głowie, myśląc, dlaczego właściwości nie działają, może okazać się pomocny.