WebLogic Server에서 컨트롤 가능한 로그는 웹로직 자체의 서버로그와 액세스 로그가 있다.
이 외에 노헙로그와 GC 로그가 존재하기는 하지만..
GC로그는 JVM 옵션이기 때문에 웹로직에서 강제로 로테이션 하는 방법은 존재하지 않고 다만 JVM 프로세스가 재기동할 때 기동 스크립트에서 로테이션 시키는 방법이 존재한다.
이번에 다룰 노헙로그의 경우에는 nohup이라는 리눅스 명령어를 통해 stdout 표준에러로그 (어플리케이션 단 로그)를 웹로직 서버로그와 함께 따로 빼는 것이기에 웹로직에서 컨트롤 할 수 없는 부분이다.
여기서 잠깐, nohup이란? : 리눅스/유닉스 시스템에서 쉘 스크립트 파일(*.sh)을 데몬형태로 실행 시키는 프로그램이다. 이로 인해 터미널 세션이 끊겨도 실행을 멈추지 않고 동작할 수 있다. |
#1. nohup 로그 로테이션하는 두 가지 방법
위에서 저렇게 이야기했지만, 노헙 로그를 로테이션 하는 방법이 아예 존재하지 않는 것은 아니다.
두 가지 방법이 있다.
# 1-1 Perl 이용 방법
첫 번째 방법은 OS의 perl이라는 명령어를 통해 가능하다.
여기서는 누군가 만들어준 감사한 perl 스크립트를 통해 로테이션 하는 방법을 설명할 것이다.
- LOGS.pl 파일을 도메인 홈에 위치시키고, 해당 파일에 실행 권한을 주어야 한다.
- 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'` |
- 해당 펄은 일별로 로테이션 하게끔 설정되어 있어서 빨간 부분만 수정하면 이 후에 웹로직 기동 후 정지할 때 까지 알아서 로테이션 해준다.
# 1-2 쉘 스크립트를 이용한 로테이션 방법
두 번째 방법은 쉘 스크립트를 만들어서 강제로 로테이션 시키는 방법이다.
1-2-1. 작업 전 웹로직 기동 스크립트 수정
# AdminServer Start Script 수정 전 : nohup ${DOMAIN_HOME}/bin/startWebLogic.sh > ${NOHUP_LOG_HOME}/${LOG_FILENM} 2>&1 & 수정 후 : 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 & 수정 후 : nohup ${DOMAIN_HOME}/bin/startManagedWebLogic.sh ${SERVER_NAME} ${ADMIN_URL} >> ${NOHUP_LOG_HOME}/${LOG_FILENM} 2>&1 & |
- 여기서 중요한 부분은 수정한 부분이 ${ADMIN_URL} 뒤에 ‘>’(write) 에서 ‘>>’(append)로 변경했다는 점입니다.
1번 LOGS.pl 방법을 사용할 때도 해당 부분에서 -append 옵션을 넣어준 것을 볼 수 있습니다. 만약 위 부분이 ‘>>’이 아니라 ‘>’로 설정하게 되면 정상적으로 로테이션이 되지 않고 기존 파일에 이어서 쓰게 됩니다.
1-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} |
1-2-3. WLS 기동 후 log.sh 쉘을 실행하면 기존에 쌓던 nohup log를 cp로 백업하고 null copy를 통해 현재 쌓고 있는 nohup log 사이즈를 0으로 변경
1-2-4. log.sh를 crontab(스케쥴링)에 설정
# crontab –l -> 현재 등록된 작업 확인 # crontab –e -> crontab 편집하기 예) [oracle@olr7 base_domain]$ crontab -l 30 17 * * * sh /sw/domains/base_domain/log.sh |
- 위와 같이 설정하면 매일 17:30분에 log.sh을 실행하여 웹로직 로그를 로테이션 시키겠다는 뜻
이런 식으로 특정 시간대에 로그를 로테이션 시키는 방법도 있다.
* LOGS.pl파일은 아래 내용 참조
오늘의 한줄평.
IT에서 안되는 것은 없다.
'오라클 > WebLogic' 카테고리의 다른 글
[웹로직] Coherence 클러스터 Inner 구성 (0) | 2021.08.13 |
---|---|
[웹로직] 암호화된 내용 복호화하는 방법 (0) | 2021.08.04 |
[웹로직] JMS MDB 테스트 구성(2) (0) | 2021.07.26 |
[웹로직] JMS MDB 테스트 구성(1) (0) | 2021.07.26 |
[웹로직] 데이터소스 모니터링(WebLogic Monitoring) (0) | 2021.07.26 |