log4j를 올바르게 실행하려면 JVM에 인수로 설정 / 전달해야하는 변수는 무엇입니까? 그리고 제대로 나는 불평하고 콘솔에 인쇄하지 않는 것을 의미합니다. 전형적인 예를 볼 수 있습니까?
참고 : 응용 프로그램에서 log4j.properties 파일을 작성하지 않아야합니다.
답변
log4j 구성 파일이 있습니까? 그냥 사용하여 참조하십시오
-Dlog4j.configuration={path to file}
{file에 대한 경로} 앞에 접두사를 붙여야합니다. file:
편집 : log4j2로 작업하는 경우 사용해야합니다
-Dlog4j.configurationFile={path to file}
답변 https://stackoverflow.com/a/34001970/552525 에서 가져옴
답변
솔루션은 다음 JVM 인수를 사용하고 있습니다.
-Dlog4j.configuration={path to file}
파일이 (클래스 경로에없는 경우 WEB-INF/classes
디스크를 사용하지만, 어딘가에서 톰캣의 경우) file:
와 같은
-Dlog4j.configuration=file:C:\Users\me\log4j.xml
자세한 정보 및 예 : http://logging.apache.org/log4j/1.2/manual.html
답변
이것은 (아마도 log4j2에서) 다음과 같이 변경된 것 같습니다.
-Dlog4j.configurationFile=file:C:\Users\me\log4j.xml
참조 : https://logging.apache.org/log4j/2.x/manual/configuration.html
답변
나는 이것이 이미 답변 된 것을 알고 있지만, 이것이 당신이 찾고있는 것이 아니라고 말했기 때문에 다음 대안을 지적하고 싶습니다.
속성 또는 xml 파일 대신 구성 클래스를 사용할 수도 있습니다.
-Dlog4j.configuratorClass=com.foo.BarConfigurator
자세한 내용은 http://logging.apache.org/log4j/1.2/manual.html 을 참조하십시오.
답변
일반적으로 log4j.properties 파일이 클래스 경로에있는 한 Log4j는 JVM 시작시 자동으로 파일을 가져와야합니다.
답변
Log4J 1.x는 2015 년부터 파티에 늦게 EOL에 도달했습니다 .
JVM 옵션 이후의 Log4J 2.x 는-Dlog4j.configurationFile=<filename>
PS는 <filename>
클래스 경로에 파일의 상대가 될 수 없는file:
다른 답변에 제안.
답변
상대 경로도 괜찮습니다.
java -Dlog4j.configuration=file:".\log4j.properties" -jar com.your-1.0-SNAPSHOT.jar
또는
java -Dlog4j.configuration=file:".\log4j.xml" -jar com.your-1.0-SNAPSHOT.jar