2009-10-06 13 views
11

Próbuję użyć log4j przez logowanie commons i mając problemy, jeśli plik właściwości log4j nie nazywa się log4.properties. Pojawia się następujący komunikat o błędzie: log4j: WARN Nie znaleziono aplikatorów dla programu rejestrującego (LogMePlease). log4j: WARN Proszę zainicjować system log4j poprawnie.rejestrowanie commons i plik właściwości log4j

Moje kodu jest bardzo prosty:

import org.apache.commons.logging.Log; 
import org.apache.commons.logging.LogFactory; 

public class LogMePlease 
{ 
static Log l = LogFactory.getLog(LogMePlease.class); 

public static void main(String [] args) 
{ 
    l.warn("Hello World!"); 
} 
} 

W mojej ścieżce klasy, mam: commons-logging.properties plik zawierający następujące wpisy

org.apache.commons.logging.Log=org.apache.commons.logging.impl.Log4JLogger 
log4j.configuration=log4j-test.properties 

i log4j- test.properties plik

kiedy uruchomić ten kod i uzyskać

log4j:WARN No appenders could be found for logger (LogMePlease). 
log4j:WARN Please initialize the log4j system properly. 

Gdybym zmienić nazwę pliku log4j-test.properties być log4j.properties - wtedy wszystko działa. Pytanie więc, w jaki sposób można skonfigurować rejestrowanie commons w celu użycia nazwy arbitralnej dla pliku log4j.properties.

Odpowiedz

10

Plik commons-logging.properties jest odczytywany tylko z rejestru commons, podczas gdy log4j będzie szukał log4j.configuration we właściwościach systemu.

Więc trzeba albo podać im -Dlog4j.configuration=log4j-test.properties w wierszu poleceń jako opcja JVM czy należy wywołać System.setProperty() przed pierwszym wywołaniem jakiejkolwiek metody logowania (który jest zazwyczaj dość trudne do osiągnięcia).

Uwaga: jeśli możesz, użyj konfiguracji XML log4j.xml; jest o wiele prostszy i bardziej wydajny w konfiguracji log4j.

1

Trzeba dodać protokół do przodu system wartości nieruchomości tak: -Dlog4j.configuration = file: //log4j-test.properties

Bez protokołu będzie wyglądać w ścieżce klasy.

0

jul - commons-logging, to polubi twoją sytuację.

org.apache.commons.logging.LogFactory=org.apache.commons.logging.impl.LogFactoryImpl 
#org.apache.commons.logging.Log=org.apache.commons.logging.impl.Jdk14Logger 
#org.apache.commons.logging.Log=org.apache.commons.logging.impl.SimpleLog 
org.apache.commons.logging.Log=org.apache.commons.logging.impl.Log4JLogger 

zestaw log4j.properties, przed wystąpieniem Log.

System.setProperty("log4j.configuration", "log4j.properties"); 
Powiązane problemy