Jakie zmienne muszę ustawić / przekazać jako argumenty do maszyny JVM, aby log4j działał poprawnie? Mówiąc właściwie, mam na myśli nie narzekać i nie drukować do konsoli. Czy mogę zobaczyć typowy przykład?
Uwaga: Muszę unikać tworzenia pliku log4j.properties w aplikacji.
Odpowiedzi:
Czy masz plik konfiguracyjny log4j? Po prostu odwołaj się do niego za pomocą
gdzie {ścieżka do pliku} powinna być poprzedzona przedrostkiem
file:
Edycja: jeśli pracujesz z log4j2, musisz użyć
Zaczerpnięte z odpowiedzi https://stackoverflow.com/a/34001970/552525
źródło
{path to file}
musi być poprzedzony,file:
aby to zadziałało.Rozwiązanie wykorzystuje następujący argument JVM:
Jeśli plik NIE znajduje się w ścieżce klas (w
WEB-INF/classes
przypadku Tomcata), ale gdzieś na dysku, użyjfile:
, na przykładWięcej informacji i przykładów tutaj: http://logging.apache.org/log4j/1.2/manual.html
źródło
-Dlogback.configurationFile=C:\logback-test.xml
-Dlog4j.debug
Wygląda na to, że zmieniło się to (prawdopodobnie z log4j2) na:
Zobacz: https://logging.apache.org/log4j/2.x/manual/configuration.html
źródło
JAVA_PARAMS="-Dlog4j.configurationFile=classpath:log4j2-container.xml"
jeśli obraz platformy Docker obsługuje zastępowanie JAVA_PARAMS zmiennymi env, a plik znajduje się wewnątrz Jar.Wiem, że na to już odpowiedź, ale ponieważ powiedziałeś, że nie jest to dokładnie to, czego szukasz, chciałbym wskazać następującą alternatywę:
Możesz także użyć klasy konfiguracji zamiast właściwości lub pliku xml.
Szczegółowe informacje można znaleźć pod adresem http://logging.apache.org/log4j/1.2/manual.html .
źródło
Ogólnie rzecz biorąc, o ile plik log4j.properties znajduje się w ścieżce klas, Log4j powinien automatycznie pobierać go podczas uruchamiania maszyny JVM.
źródło
Spóźniony na imprezę od 2015 roku, Log4J 1.x osiągnął EOL .
Log4J 2.x i nowsze, opcja JVM powinna być
-Dlog4j.configurationFile=<filename>
PS
<filename>
może być plik względną do ścieżki klasy bezfile:
jak sugerowano w innych odpowiedzi.źródło
Względna ścieżka jest również w porządku:
java -Dlog4j.configuration=file:".\log4j.properties" -jar com.your-1.0-SNAPSHOT.jar
lub
java -Dlog4j.configuration=file:".\log4j.xml" -jar com.your-1.0-SNAPSHOT.jar
źródło
Jeśli używasz gradle. Możesz zastosować wtyczkę „aplication” i użyć następującego polecenia
applicationDefaultJvmArgs = [ "-Dlog4j.configurationFile=your.xml", ]
źródło