2012-04-10 2 views
1

봄에는 로깅을 해결하기 위해 log4j가있는 slf4j가 있습니다.실행 시간에 log4j 파일 경로 매개 변수 설정

log4j.xml 구성에 상대 경로를 지정했지만 Netbeans Tomcat 및 독립 Apache Tomcat에서 응용 프로그램을 실행할 때 상대 경로가 다르므로 수동으로 변경해야합니다.

저의 아이디어는 Spring Controller에서 컨텍스트 realpath를 얻고 실행 시간에 log4j 구성으로 설정하는 것입니다. 그러나 나는 모른다 ...

어떻게하면 Log4j의 파일 경로 매개 변수를 Spring Controller에서 바꿀 수 있습니까? 당신이 시도 할 수

답변

2

두 가지 제안 :

당신의 web.xml에 WebAppRootListener 추가 -이 webapp.root에 시스템 속성을 가리키는 (기본을 구성 할 것이다, 그러나 당신은 상황에 PARAM를 사용하여 사용자 정의 할 수 있습니다 - javadoc의 링크를 참조) 그런 다음 log4j.properties/xml 파일에서 사용할 수있는 웹 응용 프로그램의 루트에 :

<listener> 
    <listener-class>org.springframework.web.util.WebAppRootListener<listener-class> 
<listener> 

<!-- log4.appender.File=${webapp.root}/logs/web-app.log --> 

또는 (당신의 web.xml에 Log4jConfigurer 궁극적으로 대표단을)를 Log4jConfigListener를 사용 -이입니다 위와 비슷하지만 사용자 정의 log4j conf를 정의 할 수 있습니다. - 몇 가지가 있습니다

<context-param> 
    <!-- Configure Log4J from the following config file location --> 
    <param-name>log4jConfigLocation</param-name> 
    <param-value>/WEB-INF/log4j.xml</param-value> 
</context-param> 

<listener> 
    <listener-class>org.springframework.web.util.Log4jConfigListener<listener-class> 
<listener> 

나는 또한 당신이 자세히 위 대한 Javadoc을 읽어 것이 좋습니다 : 또한 IGU 파일과는 로거 업데이트 런타임에 변경 사항에 대한의 log4j 설정 파일을 모니터링하고 자동으로하는 웹 응용 프로그램을 허용 Tomcat에서 여러 웹 응용 프로그램을 배포하고 시스템 속성을 공유하는 것과 관련된 문제가 있지만 기본값 (${webapp.root}

+0

이 아닌 각 웹 응용 프로그램에 대한 사용자 지정 키 제공) 고맙습니다! :) – Dani