문제

나는 로드하려고 사용자 지정 log.properties 파일 때 응용 프로그램이 시작됩니다.

나의 properties 파일에서는 동일한 패키지로 클래스,그래서 나는 가정 -Djava.util.logging.config.file=log.properties 명령행 매개변수를 얻어야 하는 특성을 파일이 로드됩니다.

하지만 속성은 단지 때로드가 지정하는 전 절대 경로를 속성 파일입니다.어떤 제안하는 방법을 사용하여 상대 경로가?

도움이 되었습니까?

해결책

Java Logging은 전체 하드 디스크를 파일을 검색하지 않습니다. 파일을 찾는 방법이 매우 간단한 규칙이 있습니다. 당신은 Java가 두 파일이 서로에 속한다는 것을 알기를 원하지만 어디서나 그렇게 말하지 않았습니다. Java는 디스크의 동일한 폴더에있는 것 이외의 속성 파일과 클래스간에 연결이 없으므로 파일을 찾을 수 없습니다.

-Djava.util.logging.config.file=log.properties 파일 인 경우에만 작동합니다 log.properties Java 프로세스의 현재 디렉토리에 있습니다 (이것은 꽤 무작위 일 수 있음). 따라서 여기서 절대 경로를 사용해야합니다.

대체 솔루션은 파일을 이동하는 것입니다 logging.properties ~ 안으로 $JAVA_HOME/lib/ (또는 거기에 있어야 할 파일을 편집). 이 경우 시스템 속성을 설정할 필요가 없습니다.

다른 팁

동적으로로드 할 수 있습니다 java.util.logging 상대 경로의 속성은 매우 쉽게 쉽게 파일을. 이것이 내가 내부에 넣은 것입니다 static {} 내 블록 Main 수업. 당신을 넣으십시오 logging.properties 파일 default package 다음 코드로 매우 쉽게 액세스 할 수 있습니다.

final InputStream inputStream = Main.class.getResourceAsStream("/logging.properties");
try
{
    LogManager.getLogManager().readConfiguration(inputStream);
}
catch (final IOException e)
{
    Logger.getAnonymousLogger().severe("Could not load default logging.properties file");
    Logger.getAnonymousLogger().severe(e.getMessage());
}

util 로깅을 로드하지 않에서 클래스 경로,그것은 필요가 절대 경로로는 이유 다른 로깅 패키지는 다음과 같 log4j 는 훨씬 쉽게 구성하고 더 나은 웹 애플리케이션에 대한 그것의 고통을 얻을 abs 경로입니다.

이는 설명되지 않는 모든 java.util.logging.LogManager doco.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top