2013-07-16 2 views
0

나는 사냥하고 읽었으므로 결코 불가능하다고 생각한다.각각 다른 log4j 설정을 사용하는 Tomcat의 동일한 webapp

Tomcat에 동일한 웹 응용 프로그램을 여러 번 배포해야합니다. 각 웹 응용 프로그램은 작업 할 데이터베이스를 나타내는 다른 구성으로 구성되어 있습니다. war 파일의 내용을 수정하지 않고 어떻게하는지 알아 냈습니다.

즉, WebApp.jar을 WebAppDB1.jar, WebAppDB2.jar에 복사 한 다음 webapps 폴더에 배포하고 각각에 대해 tomcat/conf/Catalina/localhost의 사용자 정의 컨텍스트 구성을 사용합니다. 그래서 나는 거기에서 좋다.

그러나 나는 이들 각각이 별도의 파일에 기록되기를 정말로 원합니다. 그렇다면 모든 것이 catalina.out으로갑니다. 그것은 log4j와 slf4j를 사용하는 Spring 애플리케이션이다. 내가 탐구 한 모든 길은 나를 아무 곳에도 데려다주지 않는다.

지금은 실제 WAR 파일을 업데이트하고 WEB-INF/classes로 이동하여 log4j.xml을 업데이트하는 방법으로 돌아가겠습니다.하지만 이는 수동 프로세스로 만듭니다.

아이디어가 있으십니까?

답변

0

log4j.xml 파일을 webapp 외부에 배치하고 Tomcat의 VirtualWebappLoader를 사용하여 각 webapp에 대해 다른 log4.xml을로드 할 수 있습니다.

http://tomcat.apache.org/tomcat-7.0-doc/config/loader.html#VirtualWebappLoader_Implementation

그것은 다음과 같습니다.

$ {CATALINA_BASE} /conf/Catalina/localhost/WebAppDB1.xml :

<Context docBase="..." > 
    <Loader className="org.apache.catalina.loader.VirtualWebappLoader" virtualClasspath="/somewhere/WebAppDB1" /> 
</Context> 

$ {CATALINA_BASE} /conf/Catalina/localhost/WebAppDB2.xml :

<Context docBase="..." > 
    <Loader className="org.apache.catalina.loader.VirtualWebappLoader" virtualClasspath="/somewhere/WebAppDB2" /> 
</Context> 

그리고 log4j.xml 파일을/somewhere/WebAppDB1 및/somewhere/WebAppDB2에 넣으십시오.

희망이 도움이됩니다.

+0

여러분, 선생님, 정말 대단합니다! 이것은 위대한 작품! – DaveyBob

관련 문제