2012-04-03 27 views
6

Używam biblioteki commache i log4j. Mam plik konfiguracyjny xml i pliki log4j.properties. Chcę określić moją ścieżkę właściwości log4j w moim pliku konfiguracyjnym xml. Aby załadować moje ustawienia zrobić:problem z ostrzeżeniem log4j - apache commons

//Loading my xml file 
this.config = new XMLConfiguration(this.xmlFileName); 

W tej chwili następujące ostrzeżenia zostały podniesione:

log4j:WARN No appenders could be found for logger (org.apache.commons.configuration.ConfigurationUtils). 
log4j:WARN Please initialize the log4j system properly. 
log4j:WARN See http://logging.apache.org/log4j/1.2/faq.html#noconfig for more info. 

Jednak jeszcze nie nazywa się dowolny przedmiot log4j. Po przeczytaniu pliku xml mogę pomyślnie pracować z moją instancją log4j. Czy istnieje sposób na usunięcie tych ostrzeżeń?

Odpowiedz

1

wyjścia LOG4J błąd jeśli rejestrator jest utworzona, ale nie appender (e) jest (są) określone. W praktyce błąd ten występuje, gdy rejestrator jest tworzony przed zainicjowaniem log4j.

Mówisz, że nie nazwałeś żadnego obiektu log4j. Ale w komunikacie o błędzie widzisz, że org.apache.commons.configuration.ConfigurationUtils tworzy obiekt rejestratora (zobacz wiersz 66).

Można go wyłączyć przed inicjalizacji zobaczyć How to turn off log4j warnings?

Logger.getRootLogger().setLevel(Level.OFF); 

nie powinno być potrzeby, aby włączyć go ponownie, ponieważ inicjalizacji ustawia normalnie poziom dziennika rejestratora głównego.

+0

Ok, czy istnieje sposób, aby wyłączyć LOG wewnątrz "org.apache.commons.configuration.ConfigurationUtils" lub skonfigurować moje właściwości log4j insied mój konfiguracji xml? – PapaSmurf

4

Sprawdź, czy plik log4j.properties jest w ścieżce klasy

Ten link może być przydatne: http://www.coderanch.com/t/63230/open-source/log-log-WARN-No-appenders

+0

Nie chcę wstawić moje log4j.properties w ścieżce klasy, ponieważ jest on umieszczony na zewnątrz słoika i w innym katalogu. Chcę załadować go w czasie wykonywania, przy użyciu ścieżki określonej w pliku konfiguracyjnym mojej aplikacji. – PapaSmurf

0

Należy przynajmniej ustawić appender i poziom rejestratora dla rejestratora korzenie w załadowanym log4j plik konfiguracyjny. W przeciwnym razie zobaczysz komunikat ostrzegawczy.

Przykład ustawiania poziomu appender i rejestratora dla rejestratora głównego:

#Set root logger 's level and its appender to an appender called CONSOLE which is defined below. 
log4j.rootLogger=DEBUG, CONSOLE 

#Set the behavior of the CONSOLE appender 
log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender 
log4j.appender.CONSOLE.layout=org.apache.log4j.PatternLayout 
log4j.appender.CONSOLE.layout.ConversionPattern=%d [%t] %-5p %c - %m%n 
0

mi rozwiązać mój problem z tego rozwiązania:

//Disable log level 
Logger.getRootLogger().setLevel(Level.OFF); 

teraz mogę przeczytać mój plik konfiguracyjny xml bez ostrzeżenia.
Po ustawionego poziomu dziennika:

Logger.getRootLogger().setLevel(Level.INFO); 
+0

Czy to nie jest rozwiązanie, które zasugerowałem w moim komentarzu pod moim postem? – ChrLipp

Powiązane problemy