WebLogic nohup stdout 로그 로테이션하는 두가지 방법
1. perl 사용
도메인홈에 LOGS.pl 파일을 위치 시키고 실행 권한 부여
# 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 에 로그 파일이 로테이션 된다는 의미)
참고자료
crontab 사용법 참고