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); }