catalina 로그를 로테이트하기 위한 펄 스크립트입니다. 일부 기능이 추가되었습니다.
- Argument 1 : 로그 이름
- Argument 2 : 로그 주기
#!/usr/bin/perl
## ARGV[1]
if ( $ARGV[1] ne "") {
$instName=$ARGV[1];
}
elsif ( $ENV{'INST_NAME'} ne "" ) {
$instName=$ENV{'INST_NAME'};
}
else {
$instName="catalina";
}
## ARGV[2]
if ( $ENV{'LOGS_PL_ROTATE'} ne "" ) {
$rotate=$ENV{'LOGS_PL_ROTATE'};
}
elsif ( $ARGV[2] eq "") {
$rotate="daily";
} else {
$rotate=$ARGV[2];
}
if ( $rotate eq "daily" ) {
$logsPostfix="%02d%02d%02d";
} elsif ( $rotate eq "hourly" ) {
$logsPostfix="%02d%02d%02d%02d";
} else {
$logsPostfix="%02d%02d%02d";
}
$TRUE=1;
$FALSE=0;
$DEBUG=$FALSE;
$DEFAULT_LOG_PFX="$ARGV[0]/logs/$instName.out.";
$logsPrefix=$DEFAULT_LOG_PFX;
$ignoreConsole=$FALSE;
while ($aLine=<STDIN>){
($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime(time());
$logFile=$logsPrefix.sprintf($logsPostfix,($year+1900),($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);
}
