spring legacy
spring legacy project 에서 log4j2.xml 을 profile로 관리 할때
파워킴
2022. 3. 4. 19:41
반응형
* spring 에서 logging 시스템은 중요한 부분을 차지 한다.
* 경우에 따라서는 운영환경별로 분리 하기도 하고 외부 경로의 설정값을 이용하기도 한다.
# log4j2.xml 의 profile별 관리
나의 경우 테스트 환경과 운영 서버 환경의 logfile 저장 경로가 달라 profile 별로 설정을 고려 해야 했다
예를 들면
- 나의 로컬 개발 환경은 로그 저장경로가 /svc/powernote,
- 운영 서버의 로그 저장경로는 /home/opc/logs
<?xml version="1.0" encoding="UTF-8"?>
<Configuration xmlns="http://logging.apache.org/log4j/2.0/config">
<Properties>
<SystemPropertyArbiter propertyName="spring.profiles.active" propertyValue="bhkim">
<Property name="logPath">/svc/powernote</Property>
</SystemPropertyArbiter>
<SystemPropertyArbiter propertyName="spring.profiles.active" propertyValue="prod">
<Property name="logPath">/home/svc/logs</Property>
</SystemPropertyArbiter>
<Property name="layoutPattern">
%style{%d{yyyy/MM/dd HH:mm:ss,SSS}}{cyan} %highlight{[%-5p]}{FATAL=bg_red, ERROR=red,
INFO=green, DEBUG=blue} [%C{1.}] %style{[%t]}{yellow}- %m%n
</Property>
</Properties>
<Appenders>
<File name="file" fileName="${logPath}/sample.log" append="false">
<PatternLayout pattern="${layoutPattern}" />
</File>
</Appenders>
...
</Configuration>
- SystemPropertyArbiter 를 통해 설정 할 수 있다.
- propertyName 는 properties 의 Key 값 이다.
- propertyValue 는 properties 의 값에 해당한다.
# log4j2-xxx.xml 의 별도 관리 파일 ( 파일명 변경 및 위치 변경 )
서버 운영 환경에서의 별도로 로그를 꾸준히 설정을 변경하고 관리가 필요하여 외부 파일을 설정하는경우가 있다.
이때 유용할 듯 하다.
-Dlog4j.configurationFile 옵션 셜정을 통해 해결.
* 톰캣 실행시 catalina.sh 파일에 해당 옵션을 주어 실행하면 해당 로그파일을 설정할 수 있다.
JAVA_OPTS="$JAVA_OPTS -Dlog4j.configurationFile=/home/svc/config/log4j2-prod.xml"
# 참고적으로 ~~
web.xml 에 아래와 같은 설정은 log4j2 에서는 통하지 않는것을 알고 있으며 테스트 시에도 동작 하지 않는다.
<context-param>
<param-name>log4jConfigLocation</param-name>
<param-value>classpath:log4j-${spring.profiles.active}.xml</param-value>
</context-param>
<listener>
<listener-class>org.springframework.web.util.Log4jConfigListener</listener-class>
</listener>
또한 spring 4.2.1 에서는 log4j 1.x가 EOL 로 Deprecated Class로 관리 되고 있다.
그거므로 되도록이면 log4j2 를 사용하고 경로 설정및 파일명 변경에 대해서는 catalina, 또는 java 실행 옵션으로 지정하는것이 좋을것 같다.
Java 실행변수 -Dlog4j.configuration를 통한 log4j2.xml 위치 변경이 가능 합니다.
또는 catarina 옵션 설정으로 set CATALINA_OPTS=-Dlog4j.configuration=log4j.xml 가능 합니다.
[참고 ] : https://www.egovframe.go.kr/home/qainfo/qainfoRead.do?menuNo=69&qaId=QA_00000000000013124
반응형