1. Overview

Stdout Log Rotation (perl script)




2. Descriptions

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
# rotateLOG.pl 파일 내용
#!/usr/bin/perl 
$TRUE=1; 
$FALSE=0; 
$DEBUG=$FALSE; 
#$DEFAULT_LOG_PFX="/was_log/디렉토리/로그이름.";
$DEFAULT_LOG_PFX="/home/weblogic/was/1213/domains/base_domain/logs/AdminServer/AdminServer.out."; 
$logPfx=$DEFAULT_LOG_PFX;
$ignoreConsole=$FALSE;  
 
while($aLine = <STDIN>){
	($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime(time());
	$logFile=$logPfx.sprintf("%02d%02d%02d%",($year%100),($mon+1),$mday,$hour,$min,$sec); 
	open(logH,">> $logFile"); 
    #Auto flush ON
	select((select(logH),$|=1)[0]);
	#use IO::Handle;
	#logH->autoflush($TRUE);
	print logH $aLine;
	if($ignoreConsole){ 
		print $aLine;
	} 
	close(logH); 
}
1
2
# 시작 방법
nohup ${DOMAIN_HOME}/bin/startWebLogic.sh 2>&1 | ./rotateLOG.pl &

perl script의 sprintf 안의 %02d 가 늘어날수록, 시간단위가 작아진다. %02d%02d%02d -> 년월일, 하루 단위로 로테이션

%02d%02d%02d%02d -> 한 시간 단위로 로테이션