2012-07-31 3 views
0

Java 웹 응용 프로그램을 배포하는 서버에 따라 다른 수준에서 로그인 할 수 있기를 원합니다. 예를 들어, 테스트 서버에서 DEBUG 레벨로 로그하고 싶습니다. 그리고 프로덕션 서버에서 WARN 레벨로 로그를 보내고 싶습니다. 현재 내 log4.xml 파일은 내 WAR 파일 안에 있습니다. Tomcat 컨텍스트 매개 변수를 사용하여 웹 응용 프로그램의 로깅 수준을 구성 할 수 있어야합니다. 이것이 가능한가?Tomcat 컨텍스트 매개 변수를 사용하여 Log4j를 구성 할 수 있습니까?

나는 환경 변수와 시스템 속성을 사용할 수 있음을 알았다. 예 : $ {catalina.home}이 해석됩니다. Tomcat 컨텍스트 매개 변수 값으로 대체 할 수있는 동일한 기능이 있습니까?

예를 들어, 이것은의 log4j.xml 조각이 될 것입니다 :

<Parameter name="log.level" value="DEBUG" /> 

I : log.level이 %의 TOMCAT_HOME %의/conf의/context.xml에 정의되어

<level value="${log.level}" 

위의 시도하고 작동하지 않는 것. Google은 log4j 구성 파일에서 컨텍스트 매개 변수를 사용하는 것과 관련하여 나에게 어떤 것도 언급하지 않았습니다. this SO question은 시스템 속성을 사용하여 유사한 작업을 수행하지만 Tomcat 컨텍스트 매개 변수를 사용하지 않기 때문에 원하는 것은 아닙니다. log4j 구성에서 컨텍스트 매개 변수 값 대체 기능을 사용할 수 있습니까? 외부 log4j.xml 파일을 사용하는 것과 같은 다른 옵션을 탐색해야합니까?

답변

1

Log4J가 기본적으로 그렇게 생각하지 않습니다. 스프링 웹 프레임 워크는 web.xml을 통해 구성된 청취자와 함께 약간 비슷한 기능을 수행 할 수 있습니다. 당신이 정말로 원한다면, 나는 당신이 그것을위한 코드를 잡고 그것이 당신이 원하는 정확히 원하는 것을 만들 수 있다고 생각합니다.

+0

우리는 [Log4jWebConfigurer] (http://static.springsource.org/spring/docs/3.1.x/javadoc-api/org/springframework/web/util/Log4jWebConfigurer.html)를 사용하여 외부 로그 구성 파일을 사용하게되었습니다.) 및 file : /path/to/log4j.xml과 같은 파일 값을 갖는 log4jConfigLocation 특성 나중에 우리는 Logback으로 전환하기로 결정했고 logbackConfigLocation과 비슷한 속성을 가진 Logback 용 Spring Extensions를 사용했습니다. 이를 통해 배포 할 다른 환경에 대해 서로 다른 구성 파일을 사용할 수 있습니다. – BennyMcBenBen

0

Log은 최근 로깅에 대한 극히 세분화 된 제어를 위해 최근에 사용한 한 가지 방법입니다. 설정 파일을 편집하는 것보다 조금 더 많은 작업이 있지만 엄청난 유연성을 제공합니다. 이 중 하나를 구성하는 방법에 대한 빠른 예제는 내 대답 here을 참조하십시오.

관련 문제