WAS/WebLogic

WebLogic nohup stdout 로그 로테이션하는 두가지 방법

정또00 2023. 11. 13. 17:57

 

1. perl 사용


도메인홈에 LOGS.pl  파일을 위치 시키고 실행 권한 부여 

 

LOGS.pl.zip
0.00MB

 

 

 



# AdminServer Start Script

- 붉은 색으로 표시된 부분은 한 줄로 입력 

--- 중략 ---
# log rotation
#if [ -f ${USERLOG_HOME}/nohup/nohup_${SERVER_NAME}.out ]; then
# mv ${USERLOG_HOME}/nohup/nohup_${SERVER_NAME}.out ${USERLOG_HOME}/nohup/nohup_${SERVER_NAME}.out.${DATE}
#fi


# startup
echo "<`date`> Starting ${SERVER_NAME} Server..."
#nohup ${DOMAIN_HOME}/bin/startWebLogic.sh > ${USERLOG_HOME}/nohup/nohup_${SERVER_NAME}.out 2>&1 &
nohup ${DOMAIN_HOME}/bin/startWebLogic.sh | perl LOGS.pl -ignoreConsole -rotation %02d%02d%02d -append -applyPfx ${USERLOG_HOME}/nohup/nohup_${SERVER_NAME}.out. 2>&1 &


# log
sleep 1
#tail -100f ${USERLOG_HOME}/nohup/nohup_${SERVER_NAME}.out
tail -100f ${USERLOG_HOME}/nohup/nohup_${SERVER_NAME}.out.`date +'%y%m%d'`


########################################################################################################################################################

 

 

 


# ManagedServer Start Script

--- 중략 ----


# log rotation
#if [ -f ${USERLOG_HOME}/nohup/nohup_${SERVER_NAME}.out ]; then
# mv ${USERLOG_HOME}/nohup/nohup_${SERVER_NAME}.out ${USERLOG_HOME}/nohup/nohup_${SERVER_NAME}.out.${DATE}
#fi


# startup
echo "<`date`> Starting ${SERVER_NAME} Server..."
#nohup ${DOMAIN_HOME}/bin/startManagedWebLogic.sh ${SERVER_NAME} ${ADMIN_URL} > ${USERLOG_HOME}/nohup/nohup_${SERVER_NAME}.out 2>&1 &
nohup ${DOMAIN_HOME}/bin/startWebLogic.sh | perl LOGS.pl -ignoreConsole -rotation %02d%02d%02d -append -applyPfx ${USERLOG_HOME}/nohup/nohup_${SERVER_NAME}.out. 2>&1 &



# log
sleep 1
#tail -100f ${USERLOG_HOME}/nohup/nohup_${SERVER_NAME}.out
tail -100f ${USERLOG_HOME}/nohup/nohup_${SERVER_NAME}.out.`date +'%y%m%d'`

 

 

- 해당 펄은 일별로 로테이션 하게끔 설정되어 있어서 빨간 부분만 수정하면 이 후에 웹로직 기동 후 정지할 때 까지 알아서 로테이션 해준다.


 

 

 


2. 쉘 스크립트 이용 (crontab 이용)

: crontab은 리눅스 서버에서만 사용 가능 

 


2.1  웹로직 기동 스크립트 수정 


# AdminServer Start Script

 nohup ${DOMAIN_HOME}/bin/startWebLogic.sh >> ${NOHUP_LOG_HOME}/${LOG_FILENM} 2>&1 &




# ManagedServer Start Script

nohup ${DOMAIN_HOME}/bin/startManagedWebLogic.sh ${SERVER_NAME} ${ADMIN_URL} >> ${NOHUP_LOG_HOME}/${LOG_FILENM} 2>&1 &



⚠️ 여기서 중요한 부분은 수정한 부분이 ${ADMIN_URL} 뒤에 ‘>’(write) 에서 ‘>>’(append)로 변경했다는 점

 

 



2.2 로테이션 시킬 스크립트 생성 

 


# log.sh

# Server_start_script
SERVER_NAME="M2"
DATE_TIME=`date +'%y%m%d_%H%M%S'`
DOMAIN_HOME="/sw/domains/base_domain"

#log directory
LOG_HOME="/sw/domains/base_domain/logs/${SERVER_NAME}"
NOHUP_LOG_HOME="${LOG_HOME}/nohup"
LOG_FILENM="${SERVER_NAME}_stdout.log"
NOHUP_LOG_FILENM="${SERVER_NAME}_stdout.log_${DATE_TIME}"

cp ${NOHUP_LOG_HOME}/${LOG_FILENM} ${NOHUP_LOG_HOME}/${NOHUP_LOG_FILENM}
cat /dev/null > ${NOHUP_LOG_HOME}/${LOG_FILENM}






3.3  WLS 기동 후 log.sh 쉘을 실행하면 기존에 쌓던 nohup log를 cp로 백업하고 null copy를 통해 현재 쌓고 있는 nohup log 사이즈를 0으로 변경


# crontab –e -> crontab 편집하기

0 0 * * * sh /home/weblogic/domains/log.sh

 

 

# crontab –l -> 현재 등록된 작업 확인


예)
[oracle@olr7 base_domain]$ crontab -l

0 0 * * * sh /home/weblogic/domains/log.sh  (매일매일 00:00 에 로그 파일이 로테이션 된다는 의미) 

 

 

 

 

 

 

참고자료 

https://syhwang.tistory.com/7

 

 

crontab 사용법 참고 

https://jdm.kr/blog/2