package home; import java.io.BufferedWriter; import java.io.File; import java.io.FileWriter; import java.io.IOException; import java.util.Date; // 修复:使用 java.util.Date 而不是 java.sql.Date import java.text.SimpleDateFormat; /** * 日志记录工具类 */ public class LogUtil { private static final String LOG_DIR = "systemfile/logfile"; private static final String LOG_FILE = LOG_DIR + "/openlog.txt"; private static final SimpleDateFormat DATE_FORMAT = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); /** * 记录程序启动日志 */ public static void logOpen() { ensureLogDirExists(); String timestamp = DATE_FORMAT.format(new Date()); writeLog("程序启动: " + timestamp + "\n"); } /** * 记录程序关闭日志并计算工作时长 * @param startTime 程序启动时间戳 */ public static void logClose(long startTime) { ensureLogDirExists(); long endTime = System.currentTimeMillis(); String closeTime = DATE_FORMAT.format(new Date(endTime)); // 计算工作时长 long duration = endTime - startTime; String durationStr = formatDuration(duration); String log = "程序关闭: " + closeTime + "\n" + "工作时长: " + durationStr + "\n" + "-----------------------------------\n"; writeLog(log); } /** * 确保日志目录存在 */ private static void ensureLogDirExists() { File dir = new File(LOG_DIR); if (!dir.exists()) { boolean created = dir.mkdirs(); // 创建多级目录 if (!created) { System.err.println("无法创建日志目录: " + LOG_DIR); } } } /** * 格式化时长(毫秒→可读字符串) */ private static String formatDuration(long millis) { long seconds = millis / 1000; long hours = seconds / 3600; long minutes = (seconds % 3600) / 60; seconds = seconds % 60; return String.format("%d小时 %d分钟 %d秒", hours, minutes, seconds); } /** * 写入日志到文件(追加模式) */ private static void writeLog(String content) { try (FileWriter fw = new FileWriter(LOG_FILE, true); BufferedWriter bw = new BufferedWriter(fw)) { bw.write(content); bw.flush(); // 确保内容立即写入 } catch (IOException e) { System.err.println("写入日志失败: " + e.getMessage()); } } public static void log(String string) { // TODO 自动生成的方法存根 } }