728x90
weblogic nohup 로그의 경우 server 로그와 달리 로그 로테이트 설정이 불가능하다
=> perl 스크립트 사용 or crontab 사용으로 로그 로테이트 설정 가능
[perl 스크립트를 활용한 로그 로테이트 방법]
1. perl 스크립트 생성
아래 두 가지 중 택하여 사용
logs.pl
#!/usr/bin/perl
#[Window]
# start /b run 2>&1|start /b perl log.pl admin.out. 2>&1
#[Unix]
# nohup run 2>&1|nohup ./log.pl admin.out. 1>&0 2>&1 &
$SIG{INT}=$SIG{BREAK}='IGNORE'; - 해당 시그널은 무시하겠다
$DEFAULT_LOG_PFX="OUT."; - 첫번째 ARGV 설정을 위한 임의 변수 설정
$logPfx = ($ARGV[0] eq '') ? $DEFAULT_LOG_PFX : $ARGV[0]; - 첫번째 ARGV 설정
use threads;
use threads::shared;
my $mday:shared;
threads->create(\&check); - 서브 스레드로 계속 시간 체크
($sec,$min,$hour,$mday,$mon,$year,$wday) = localtime; - 메인 스레드 부분 시작 / 시간 체크
$logFile=$logPfx.sprintf("%04d%02d%02d",($year+1900),($mon+1),$mday); - admin.out.20201030 과 같은 형식의 로그 생성
open(logH,">> $logFile"); - 임의의 logH 선언 및 리다이렉션
select((select(logH),$|=1)[0]);
$omday=$mday;
while($aLine = <STDIN>){
if($omday!=$mday){ - 계속 체크하고있던 mday(날짜)가 변경되면 기존 로그를 닫고 새로운 날짜로 로그 생성
close(logH);
($sec,$min,$hour,$mday,$mon,$year,$wday) = localtime;
$logFile=$logPfx.sprintf("%04d%02d%02d",($year+1900),($mon+1),$mday);
open(logH,">> $logFile");
select((select(logH),$|=1)[0]);
$omday=$mday;
}
print logH $aLine; - 날짜가 변경되지 않으면 계속 출력함
}
close(logH);
$_->detach for threads->list;
sub check{ - 서브 스레드로 계속 시간 체크
while(1){
sleep(1);
($sec,$min,$hour,$mday,$mon,$year,$wday) = localtime;
}
}
logs2.pl
#!/usr/bin/perl
$TRUE = 1;
$FALSE = 0;
$DEBUG = $FALSE;
$WASLOG="${/해당_시스템_웹로직_도메인_경로}/logs";
$DEFAULT_LOG_PFX = "$ARGV[0].out_";
#####$DEFAULT_LOG_PFX = "OUT.";
$logPfx = $DEFAULT_LOG_PFX;
$ignoreConsole = $FALSE;
#####$ignoreConsole = $TRUE;
while($aLine = <STDIN>) {
($sec, $min, $hour, $mday, $mon, $year, $wday, $yday, $isdst) = localtime(time());
$logFile = $logPfx.sprintf("%02d%02d%02d", ($year+1900), ($mon+1), $mday, $hour, $min, $sec);
open(logH, ">> $WASLOG/$logFile");
select((select(logH), $|=1)[0]);
print logH $aLine;
if(!$ignoreConsole) {
print $aLine;
}
close(logH);
}
2. 서버 기동 스크립트 수정
nohup ./bin/startManagedWebLogic.sh ${MANAGED_NAME01} ${ADMIN_URL} | nohup ./logs.pl admin.out. 1>&0 2>&1 &
tail -f ${LOG_DIR}/${SERVER_NAME}.out.`date +'%Y%m%d'`
형식은 기존의 nohup 로그 작성 형식에 따라 조금씩 변경하여 작성할 것
또는 아래 스크립트 참조하여 수정
admin 서버)
mv ${LOG_DIR}/${SERVER_NAME}.out \
${LOG_DIR}/${SERVER_NAME}.out_`date +%Y-%m-%d`
nohup ${DOMAIN_HOME}/bin/startWebLogic.sh \
${SERVER_NAME} > ${LOG_DIR}/${SERVER_NAME}.out \
2>&1 | perl ./logs.pl ${SERVER_NAME} -append $TRUE &
managed 서버)
mv ${LOG_DIR}/${SERVER_NAME}.out \
${LOG_DIR}/${SERVER_NAME}.out_`date +%Y-%m-%d`
nohup ${DOMAIN_HOME}/bin/startManagedWebLogic.sh \
${SERVER_NAME} ${ADMIN_URL} > ${LOG_DIR}/${SERVER_NAME}.out \
2>&1 | perl ./logs.pl ${SERVER_NAME} -append $TRUE &
'WAS > WEBLOGIC' 카테고리의 다른 글
45. JDK 변경 (0) | 2024.06.05 |
---|---|
44. weblogic node manager(노드 매니저) (0) | 2024.06.03 |
42. Plan.xml (0) | 2024.06.03 |
41. 웹로직 thread 확인 및 튜닝 (0) | 2024.05.28 |
40. 웹로직 인코딩 에러 (0) | 2024.05.28 |