JSVCの標準出力のログローテート

JSVCでTomatを起動した場合、標準出力ログであるcatalina.outをApacheのrotatelogsでは、ログローテートができません。
回避策として、Syslog出力にしてログローテートする方法を説明します。


標準出力をSYSLOGへ出力する設定
# vi /etc/init.d/tomcat
start(){
    #
    # Start Tomcat
    #
    echo -n "Starting jsvc: "
    $DAEMON \
    -pidfile $PIDFILE \
    -user $TOMCAT_USER \
    -home $JAVA_HOME \
    -Dcatalina.home=$CATALINA_HOME \
    -Dcatalina.base=$CATALINA_BASE \
    -Djava.io.tmpdir=$CATALINA_TMPDIR \
    -outfile SYSLOG -errfile SYSLOG \
    $CONFIG_LOG \
    $CATALINA_OPTS \
    -cp $CLASSPATH \
    -Xloggc:$GCLOG_FILE \
    -XX:+UseGCLogFileRotation \
    -XX:NumberOfGCLogFiles=$GCLOG_LIMIT \
    -XX:GCLogFileSize=$GCLOG_MAX_SIZE \
    org.apache.catalina.startup.Bootstrap


SYSLOG設定
上記設定した場合、daemonファシリティで出力されます。 messagesにdaemonファシリティのログが出ない設定も施しておきます。
# vi /etc/rsyslog.conf
*.info;mail.none;authpriv.none;cron.none;daemon.none                /var/log/messages

daemon.*                                                /var/log/daemon/daemon.log


ログローテート
#  vi /etc/logrotate.d/daemon
/var/log/daemon/daemon.log
{
    daily
    delaycompress
    sharedscripts
    postrotate
        /bin/kill -HUP `cat /var/run/syslogd.pid 2> /dev/null` 2> /dev/null || true
    endscript
}


Google+