2012-01-17 10 views
9

Mam problemy z umieszczeniem mojego pliku log4j.properties w ścieżce klas. Mogę go używać, gdy się rozwijam (Eclipse Indigo), ale kiedy eksportuję moją aplikację jako JAR, nie mogę.Problemy z log4.properties classpath

Zrobiłem ręcznie plik MANIFEST.MF dla eksportowanego JAR:

Manifest-Version: 1.0 
Main-Class: main.Program 
Class-Path: lib/log4j.properties lib/log4j-1.2.15.jar 

a następnie umieścić w tym pliku JAR organizacji:

folder 
    |-------- app.jar 
    |-------- lib 
      |--------- log4j.properties 
      |--------- log4j-1.2.15.jar 

Kiedy próbuję uruchomić app.jar, Kowalski log4j.jar lecz nie log4j.properties:

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

Moje log4j.pro tacyjne plików to tak:

log4j.rootLogger=INFO, stdout, file 

PATTERN=[%d] [%p] [%c{1}]: %m%n 

log4j.appender.stdout=org.apache.log4j.ConsoleAppender 
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout 
log4j.appender.stdout.layout.ConversionPattern=${PATTERN} 

log4j.appender.file=org.apache.log4j.DailyRollingFileAppender 
log4j.appender.file.DatePattern='.'yyyy-MM-dd 
log4j.appender.file.File=${logger_file_path} 
log4j.appender.file.layout=org.apache.log4j.PatternLayout 
log4j.appender.file.layout.ConversionPattern=${PATTERN} 

Odpowiedz

11

Nie wkładać samego log4j.properties w ścieżce klasy, ale w katalogu, który zawiera ten plik.

Class-Path: lib lib/log4j-1.2.15.jar 
+0

Podaje ten sam błąd – rnunes

+0

Poprawiłem już zmianę log4j.properties na "folder" (tam, gdzie istnieje JAR) i zmienię ścieżkę klasy na ". Lib/log4j-1.2.15.jar". Wcześniej próbowałem kilku ścieżek folderów do "lib" (np./Lib /, lib /, ./lib/) i żaden z nich nie działał. – rnunes

+0

Stary wątek, ale po prostu chcę dodać, że to podejście naprawdę działa. Inną dobrą rzeczą w tym podejściu jest to, że użytkownik może zmienić poziom dziennika, jeśli chce, ponieważ plik konfiguracyjny znajduje się poza słojem. – arunskrish

1

Dodaj log4j.properties do app.jar.

+0

Na razie wolę mieć to na zewnątrz – rnunes

12

Są trzy sposoby, które znam.

  1. Dodaj log4j.properties do app.jar
  2. Umieść log4j.properties do "folder" (gdzie istnieje JAR) i zmień ścieżkę do klasy .lib/log4j-1.2.15.jar.
  3. Umieść log4j.properties w folderze o nazwie "conf" na przykład i zmień ścieżkę klasy na ./conf/.

Próbowałem, to działa.

+3

Dziękuję bardzo. Mój angielski jest bardzo słaby! –

17

jeszcze jeden sposób, aby to zrobić: -Dlog4j.configuration=file:"./log4j.properties"

+1

Dla wersji log4j w wersji 2 użyj: -Dlog4j.configurationFile = file: "YourPathHERE/log4j2.xml" – DataMania

-1

spróbować wykonać:

javar -jar -Dlog4j.configuration = file: "./ log4j.properties" app.jar

0

I spróbował odpowiedzi Jespera i początkowo nie działał. Potem próbowałem z

Class-Path: lib/ lib/log4j-1.2.15.jar 

Potem zadziałało.