on
java에서 logback.xml 경로 변경하는 방법
java에서 logback.xml 경로 변경하는 방법
728x90
logback을 사용하면서 logback의 설정을 변경해야 할 경우가 있습니다.
java web project에서는 logback.xml을 수정 후 WAS를 재시작하면 되고 Spring boot의 경우에는 application.properties의 옵션으로 logback.xml의 경로를 변경할 수 있습니다.
그런데, Runnable jar의 경우 jar안에 logback.xml이 포함되어 있어서 변경하기 애매합니다.
(물론.. jar파일 안의 xml 파일을 수정하면 되긴합니다.)
불편하게 jar파일 안의 xml파일을 수정하지 않고 다른 좋은 방법이 있는데, 다음과 같습니다.
1. -Dlogback.configurationFile 옵션 사용
다음과 같이 java를 실행할 때의 옵션으로 파일 경로를 변경할 수 있습니다.
java -Dlogback.configurationFile=config.xml -jar test.jar
여기서 주의사항 및 참고사항이 있습니다.
-Dlogback.configurationFile 옵션이 test.jar 뒤에 오면 안 됩니다. 그 경우 값이 옵션이 아닌 test.jar의 arguments로 인식합니다. -Dlogback.configurationFile 옵션에 파일 경로 없이 파일명만 있을 경우 jar와 같은 경로를 참조합니다. -Dlogback.configurationFile 옵션을 사용하더라도 test.jar 내부에 logback.xml이 존재한다면 무조건 test.jar의 logback.xml을 참조하기 때문에 반드시 jar 파일 내부의 logback.xml을 삭제해야 합니다.
2. System.setProperty 사용
System.setProperty("logback.configurationFile", "/path/to/config.xml");
위와 같이 System.setProperty로 옵션을 변경할 수 있습니다.
샘플 코드는 다음과 같습니다.
class Main { static { System.setProperty("logback.configurationFile", "/path/to/config.xml"); } private final Logger LOG = LoggerFactory.getLogger(Main.class); public void main (String[] args) { ... } }
3. ch.qos.logback.classic.joran.JoranConfigurator 활용
import ch.qos.logback.classic.LoggerContext; import ch.qos.logback.classic.joran.JoranConfigurator; import ch.qos.logback.core.joran.spi.JoranException; import org.slf4j.LoggerFactory; import java.io.FileInputStream; import java.io.IOException; import java.io.InputStream; public class Test2 { public static void main(String[] args) throws IOException, JoranException { LoggerContext loggerContext = (LoggerContext) LoggerFactory.getILoggerFactory(); loggerContext.reset(); JoranConfigurator configurator = new JoranConfigurator(); InputStream configStream = new FileInputStream("/path/logback.xml"); configurator.setContext(loggerContext); configurator.doConfigure(configStream); // loads logback file configStream.close(); } }
728x90
반응형
from http://yjh5369.tistory.com/649 by ccl(A) rewrite - 2021-12-18 22:01:50