[java] JVM 인수를 통한 log4j 구성?

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