일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
Tags
- STS
- between date
- Spring
- datasource
- 배열스트링
- springboot
- Spring Security
- 라즈베리파이
- oracle
- ubuntu
- python 개발환경
- Java
- github
- template
- Spring Boot
- hikari
- Gradle
- ORACLE CLOUD
- Linux
- catalina log
- hikaricp
- intellij
- MySQL
- bitbucket
- log4j profile
- between 날짜
- log4j2
- mybatis
- oracle between
- git
Archives
- Today
- Total
반응형
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
Tags
- STS
- between date
- Spring
- datasource
- 배열스트링
- springboot
- Spring Security
- 라즈베리파이
- oracle
- ubuntu
- python 개발환경
- Java
- github
- template
- Spring Boot
- hikari
- Gradle
- ORACLE CLOUD
- Linux
- catalina log
- hikaricp
- intellij
- MySQL
- bitbucket
- log4j profile
- between 날짜
- log4j2
- mybatis
- oracle between
- git
Archives
- Today
- Total
파워노트
spring legacy project 에서 log4j2.xml 을 profile로 관리 할때 본문
반응형
* 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
반응형
'spring legacy' 카테고리의 다른 글
tomcat 성능 향상. maxKeepAliveRequests="1" (0) | 2022.03.11 |
---|---|
@Async @Scheduler ThreadPool 생성 및 사용. (0) | 2022.03.08 |
spring properties 에 대해서... (0) | 2022.03.04 |
Comments