擬似ログローテート
log4jとかでログローテートすると翌日などにアクセスした時などにしかローテートされない --> それだと深夜にログを取りたい時に取れないじゃん。 --> org.apache.log4j.varia.ExternallyRolledFileAppenderを使う。
#!/bin/sh
host='localhost'
port='9999'
classpath="/Users/hachiya_eiji/.m2/repository/log4j/log4j/1.2.15/log4j-1.2.15.jar"
file_dir='/usr/local/tomcat/logs/pet'
rotate_file="${file_dir}/pet_app.log"
rotate_day=`date +"%Y-%m-%d"`
java -cp $classpath org.apache.log4j.varia.Roller $host $port
mv ${rotate_file}.1 ${rotate_file}.${rotate_day}
gzip ${rotate_file}.${rotate_day}
#!/bin/sh
SERVERS=""
SSH_USER=''
ID_RSA_PATH="${WORKSPACE}/.ssh/id_rsa"
TOMCAT_HOME='/usr/local/tomcat'
CLASSPATH="${TOMCAT_HOME}/webapps/pet/WEB-INF/lib/log4j-1.2.15.jar"
FILE_DIR="${TOMCAT_HOME}/logs/patriot"
ROTATE_FILE='contest.log'
ROTATE_DAY=`date +"%Y-%m-%d" --date "1 day ago"`
HOST='localhost'
PORT='49152'
for SERVER_IP in $SERVERS
do
ssh -oStrictHostKeyChecking=no -t -t -i ${ID_RSA_PATH} ${SSH_USER}@${SERVER_IP} <<EOF
find $FILE_DIR -atime 1 -type f -name ${ROTATE_FILE} \
-exec echo {} \; \
-exec java -cp $CLASSPATH org.apache.log4j.varia.Roller $HOST $PORT \; \
-exec mv {}.1 ${FILE_DIR}/${ROTATE_FILE}.${ROTATE_DAY} \; \
-exec gzip ${FILE_DIR}/${ROTATE_FILE}.${ROTATE_DAY} \;
EOF
exit
done