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>&amp;1 \"&amp;\"/      2>&amp;1 | LOGS.pl &amp;/g" ${INST_HOME}/bin/catalina.sh

위는 [ >> "$CATALINA_OUT" 2>&1 "&" ] 라인을 수정하는 의미입니다.