crontab -e
00 23 * * * /usr/local/app/apache-tomcat-6.0.20/DelLog.sh
#!/bin/bash
export JAVA_HOME=/opt/jdk1.6.0_14
export PATH=$JAVA_HOME/bin
export CLASSPATH=.:$JAVA_HOME/lib
java -jar /usr/local/app/apache-tomcat-6.0.20/DelLog.jar /data/app_tomcat_logs 3 >>/usr/local/app/apache-tomcat-6.0.20/delLog.log
import java.io.File;
import java.util.Calendar;
public class DelLog{
public static void main(String[] args){
if(args.length < 2) {
System.out.println("parameter is less than 2");
System.out.println("parameter1 |- log dir");
System.out.println("parameter1 |- del log days before");
}
int maxDays = Integer.valueOf(args[1]);
Calendar today = getYMD(Calendar.getInstance());
File[] fileItems = new File(args[0]).listFiles();
for(File fileItem : fileItems){
if(fileItem.getName().matches("catalina\\.\\d{4}-\\d{2}-\\d{2}\\.out")){
Calendar fileDate = Calendar.getInstance();
fileDate.setTimeInMillis(fileItem.lastModified());
fileDate = getYMD(fileDate);
if(getElapsedDays(today, fileDate) > maxDays){
fileItem.delete();
System.out.println("delete " + fileItem.getPath());
}
}
}
}
public static Calendar getYMD(Calendar target){
Calendar cale = Calendar.getInstance();
cale.set(Calendar.YEAR, target.get(Calendar.YEAR));
cale.set(Calendar.MONTH, target.get(Calendar.MONTH));
cale.set(Calendar.DAY_OF_MONTH, target.get(Calendar.DAY_OF_MONTH));
cale.set(Calendar.HOUR_OF_DAY, 0);
cale.set(Calendar.MINUTE, 0);
cale.set(Calendar.SECOND, 0);
cale.set(Calendar.MILLISECOND, 0);
return cale;
}
public static int getElapsedDays(Calendar cd1, Calendar cd2){
return (int)Math.ceil((cd1.getTimeInMillis() - cd2.getTimeInMillis())/millisOfDay);
}
private final static long millisOfDay = 24L*60*60*1000;
}