1. 개요
한 파일로 쌓여서 골치아픈 catalina.out을 daily로 분리하기 위해 여러 방법이 제안되고 있는데, 오늘은 LOGS.pl 파일을 이용하는 방법입니다.
2. LOGS.pl
#!/usr/bin/perl
$TRUE=1;
$FALSE=0;
$DEBUG=$FALSE;
$DEFAULT_LOG_PFX="./logs/catalina.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+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);
}
3. 적용
그리고 catalina.sh 수정.
cp ${INST_HOME}/bin/catalina.sh ${INST_HOME}/bin/catalina.sh.default
perl -pi -e "s/^ >> \"\\\$CATALINA_OUT\" 2>&1 \"&\"/ 2>&1 | LOGS.pl &/g" ${INST_HOME}/bin/catalina.sh
위는 [ >> "$CATALINA_OUT" 2>&1 "&" ] 라인을 수정하는 의미입니다.