본문으로 바로가기

[log4j 설정] webAppRootKey

category 3. 웹개발/3_4 환경설정 & etc 2017. 6. 5. 16:32
반응형

webAppRootKey

 

공통모듈에 이식된 log4j의 경우 사용하는 개발자의 환경세팅시에 매번 번거롭게 변경을 해줘야 한다. 웹 base개발인 경우 본인은 이 문제를 해결하기 위해 web.xml의 context-param 을 통해서 각 개발자간 상이한 환경에서도 동적으로 webroot경로를 얻기 위해 다음과 같이 정의하여 사용한다.

 

web.xml
     <context-param>
         <param-name>webAppRootKey</param-name>
         <param-value>webapp.root</param-value>
     </context-param>

 

 단일 컨테이너(WAS)상에 위의 형태를 사용하는 web app가 한개인 경우는 아무런 문제 없이 작동한다. 하지만 두 개 이상의 web app가 구동되면 에러를 발생시킨다.


 web.xml -> context-param에 선언되는 webAppRootKey name의 경우 system property의 key로 설정 된다.
즉, System.getProperty("webapp.root") 이렇게 사용될 수 있기 때문에 그러므로 서로다른 webapp내에 context-param이라 할지라도 system property로 활용되기에 중복된 key값을 사용할 수 없으므로 나타나는 에러이다.

위와 같은 경우 다음과 같이 유니크하게 선언하면 해결된다.

 

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>

 

 

반응형

댓글을 달아 주세요

  1. 곽효영 2017.06.19 15:58