2012-10-25 1 views
8

다음 상황이 발생합니다. 각 배치 파일이 동일한 병에서 main()을 사용하여 Java 클래스를 호출하는 다른 배치 파일에 의해 시작되는 두 개의 프로그램을 실행할 수 있어야합니다. 각 프로그램에 자체 로그가 필요합니다. 그러나 두 번째 프로그램은 첫 번째 설치 프로그램이므로 설치 위치가 아직 존재하지 않을 수 있으므로 /Dlogback.configurationFile =/path/to/config 파일을 쉽게 지정하거나 지정할 수는 없습니다. 원하는 경우, 당신은의 위치를 ​​지정할 수 있습니다파일이 아닌 클래스 경로 자원으로 로그백 구성을 지정하는 방법

을 시스템 특성

로 기본 구성 파일의 위치를 ​​지정 :

Logback documentation seems to provide a solution는하지만 난 그것을 작동하게하는 방법의 예를 필요 logback.configurationFile이라는 시스템 등록 정보를 가진 기본 구성 파일. 이 속성 값 은 URL, 클래스 경로의 리소스 또는 응용 프로그램 외부의 파일 인 경로 일 수 있습니다.

자바 -Dlogback.configurationFile =/경로 /로/config.xml에 chapters.configuration.MyApp1

사람이 logback.configurationFile이 클래스 경로 등의 자원으로 정의된다 예를 들어 날 지점 수 파일 시스템에 반대?

+0

변경하려는 로그 파일의 경우 단일 logback.xml 구성 파일에서 로그 파일을 변수로 정의하지 않는 이유는 무엇입니까? 이것은 로깅 구성의 대부분이 동일하면 특히 유용합니다. 그런 다음 로그 파일 이름을 클래스 경로의 자원에서 읽거나 설치 프로그램 호출의 일부로 사용할 수 있습니다. – andygavin

답변

10

간단히 my-logback.xml을 클래스 경로 항목 중 하나의 루트에 넣고 -Dlogback.configurationFile=my-logback.xml을 지정할 수 있습니다. 내부적으로 파일을 얻으려면 아마도 ClassLoader#getResource(String name)을 사용하게됩니다. 자세한 정보는이 메소드의 JavaDoc을 확인하십시오. https://logback.qos.ch/manual/configuration.html#configFileProperty 아래의 예와 :

+0

이 작동 할 것이라고 생각합니다.하지만 호기심 때문에 클래스 패스의 루트 아래에서 어떻게 할 것입니까? –

+1

아니요, 작동하지 않습니다. –

+1

저는 실제로 지금 사용해 보았습니다. 다시 설정을 확인할 수 있습니까? –

1

이 질문에 대한 대답은 제공된 링크에

리소스로, 또는 URL 등의 파일로 참조 할 수 있습니다 포함하는 내용.

As a file: 
To include a file use the file attribute. You can use relative paths but note that the current directory is defined by the application and is not necessarily related to the path of the configuration file. 

As a resource: 
To include a resource, i.e a file found on the class path, use the resource attribute. 

<include resource="includedConfig.xml"/> 

As a URL: 
To include the contents of a URL use the url attribute. 

<include url="http://some.host.com/includedConfig.xml"/> 
관련 문제