검색결과 리스트
분류 전체보기에 해당되는 글 115건
- 2010.03.23 동일 컨테이너상 서로다른 webapp에 선언된 webAppRootKey로 인한 문제해결 1
글
동일 컨테이너상 서로다른 webapp에 선언된 webAppRootKey로 인한 문제해결
Jakarta
2010. 3. 23. 11:37
동일 작업대상을 협업으로 개발할때 log4j설정중 로그파일 위치는 각 개발자간 서로다른 경로상에 위치하게 된다.
최초 정의이후 거의 변화가 없는것이 log4j 설정파일 이지만
전사적으로 사용되는 framework이나 공통모듈에 이식된 log4j의 경우 이를 사용하는 개발자의 환경세팅시에
매번 변경을 해줘야 하는 번거로움이 존재한다.
웹 base개발인 경우 본인은 이 문제를 해결하기 위해
web.xml의 context-param 을 통해서 각 개발자간 상이한 환경에서도 동적으로 webroot경로를
얻기 위해 다음과 같이 정의하여 사용한다.
하지만 두 개 이상의 web app가 구동되면 여지없이 기동시에 에러를 발생시킨다.
이유인즉 context-param에 선언되는 webAppRootKey name의 경우
system property의 key로 설정된다는것이다.
즉, System.getProperty("webapp.root") 이렇게 사용될 수 있다는것이다.
그러므로 서로다른 webapp내에 context-param이라 할지라도
system property로 활용되기에 중복된 key값을 사용할 수 없으므로 나타나는 에러인것이다.
어쩔수 없이 context-param의 value는 유니크한 값으로 선언할 수 밖에 없을것 같다.
다음과 같이 말이다. ㅡㅡ
최초 정의이후 거의 변화가 없는것이 log4j 설정파일 이지만
전사적으로 사용되는 framework이나 공통모듈에 이식된 log4j의 경우 이를 사용하는 개발자의 환경세팅시에
매번 변경을 해줘야 하는 번거로움이 존재한다.
웹 base개발인 경우 본인은 이 문제를 해결하기 위해
web.xml의 context-param 을 통해서 각 개발자간 상이한 환경에서도 동적으로 webroot경로를
얻기 위해 다음과 같이 정의하여 사용한다.
web.xml
<context-param>
<param-name>webAppRootKey</param-name>
<param-value>webapp.root</param-value>
</context-param>
log4j.xml단일 컨테이너(WAS)상에 위의 형태를 사용하는 web app가 한개인 경우는 아무런 문제 없이 작동한다.
<appender name="DAILY" class="org.apache.log4j.DailyRollingFileAppender">
<param name="datePattern" value="'.'yyyy-MM-dd" />
<param name="file" value="${webapp.root}/WEB-INF/logs/epms.log" />
<param name="append" value="true" />
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="%t> [%d{yyyy-MM-dd HH:mm:ss}] [%c{1}] [%L] [%p] %m %n"/>
</layout>
</appender>
하지만 두 개 이상의 web app가 구동되면 여지없이 기동시에 에러를 발생시킨다.
이유인즉 context-param에 선언되는 webAppRootKey name의 경우
system property의 key로 설정된다는것이다.
즉, System.getProperty("webapp.root") 이렇게 사용될 수 있다는것이다.
그러므로 서로다른 webapp내에 context-param이라 할지라도
system property로 활용되기에 중복된 key값을 사용할 수 없으므로 나타나는 에러인것이다.
어쩔수 없이 context-param의 value는 유니크한 값으로 선언할 수 밖에 없을것 같다.
다음과 같이 말이다. ㅡㅡ
webapp1
<context-param>
<param-name>webAppRootKey</param-name>
<param-value>first.webapp.root</param-value>
</context-param>
<appender name="DAILY" class="org.apache.log4j.DailyRollingFileAppender">
<param name="datePattern" value="'.'yyyy-MM-dd" />
<param name="file" value="${first.webapp.root}/WEB-INF/logs/epms.log" />
<param name="append" value="true" />
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="%t> [%d{yyyy-MM-dd HH:mm:ss}] [%c{1}] [%L] [%p] %m %n"/>
</layout>
</appender>
webapp2테스트
<context-param>
<param-name>webAppRootKey</param-name>
<param-value>second.webapp.root</param-value>
</context-param>
<appender name="DAILY" class="org.apache.log4j.DailyRollingFileAppender">
<param name="datePattern" value="'.'yyyy-MM-dd" />
<param name="file" value="${second.webapp.root}/WEB-INF/logs/epms.log" />
<param name="append" value="true" />
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="%t> [%d{yyyy-MM-dd HH:mm:ss}] [%c{1}] [%L] [%p] %m %n"/>
</layout>
</appender>