中间件学习之定时清理Tomcat日志文件
import java.io.File;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Timer;
import java.util.TimerTask;
public class TomcatLogCleaner {
private static final String LOG_DIR = "/path/to/tomcat/logs"; // 替换为你的Tomcat日志目录
private static final long ONE_DAY = 24L * 60 * 60 * 1000; // 一天的毫秒数
private static final int DAYS_TO_KEEP = 7; // 保留日志的天数
public static void main(String[] args) {
Timer timer = new Timer();
TimerTask task = new TimerTask() {
@Override
public void run() {
cleanupLogs(LOG_DIR, DAYS_TO_KEEP);
}
};
// 每天定时执行清理任务
timer.scheduleAtFixedRate(task, calculateNextRunTime(), ONE_DAY);
}
private static long calculateNextRunTime() {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm");
Date now = new Date();
String today = sdf.format(now);
Date nextRunTime = sdf.parse(today + " 00:00"); // 每天午夜进行清理
return nextRunTime.getTime() - now.getTime() + (60 * 1000); // 提前一分钟执行,避免刚好落在午夜
}
private static void cleanupLogs(String logDir, int daysToKeep) {
File[] logFiles = new File(logDir).listFiles();
long now = System.currentTimeMillis();
for (File logFile : logFiles) {
if (logFile.getName().endsWith(".log") && (now - logFile.lastModified()) > daysToKeep * ONE_DAY) {
logFile.delete();
}
}
}
}
这段代码使用了Java的Timer
和TimerTask
来实现定时任务,每天午夜定时清理指定目录下的日志文件,保留指定天数内的日志。这是一个简单的日志清理工具,可以作为学习定时任务处理的示例。
评论已关闭