| src/main/java/com/zy/asrs/mapper/DeviceDataLogMapper.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| src/main/java/com/zy/asrs/service/DeviceDataLogService.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| src/main/java/com/zy/asrs/service/impl/DeviceDataLogServiceImpl.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| src/main/java/com/zy/asrs/task/ClearDeviceDataLogScheduler.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| src/main/java/com/zy/core/task/DeviceLogScheduler.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| src/main/resources/application.yml | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 |
src/main/java/com/zy/asrs/mapper/DeviceDataLogMapper.java
@@ -12,8 +12,8 @@ @Repository public interface DeviceDataLogMapper extends BaseMapper<DeviceDataLog> { @Delete("delete from wcs_device_data_log where create_time < FROM_UNIXTIME(UNIX_TIMESTAMP() - (24 * 60 * 60)) limit 50000") int clearLog(); @Delete("delete from wcs_device_data_log where create_time < FROM_UNIXTIME(UNIX_TIMESTAMP() - (#{days} * 24 * 60 * 60)) limit 50000") int clearLog(@Param("days") int days); int insertBatch(@Param("list") List<DeviceDataLog> list); src/main/java/com/zy/asrs/service/DeviceDataLogService.java
@@ -5,7 +5,7 @@ public interface DeviceDataLogService extends IService<DeviceDataLog> { int clearLog();//清理超过24小时日志数据 int clearLog(int expireDays); boolean saveBatch(java.util.List<DeviceDataLog> list); } src/main/java/com/zy/asrs/service/impl/DeviceDataLogServiceImpl.java
@@ -10,8 +10,8 @@ public class DeviceDataLogServiceImpl extends ServiceImpl<DeviceDataLogMapper, DeviceDataLog> implements DeviceDataLogService { @Override public int clearLog() { return this.baseMapper.clearLog(); public int clearLog(int expireDays) { return this.baseMapper.clearLog(expireDays); } @Override src/main/java/com/zy/asrs/task/ClearDeviceDataLogScheduler.java
File was deleted src/main/java/com/zy/core/task/DeviceLogScheduler.java
@@ -36,10 +36,23 @@ private String storageType; @Value("${deviceLogStorage.loggingPath}") private String loggingPath; @Value("${deviceLogStorage.expireDays}") private Integer expireDays; @Autowired private DeviceDataLogService deviceDataLogService; @Autowired private RedisUtil redisUtil; @Scheduled(cron = "0/3 * * * * ? ") public void delDeviceLog() { if ("mysql".equals(storageType)) { deviceDataLogService.clearLog(expireDays == null ? 1 : expireDays); }else if ("file".equals(storageType)) { clearFileLog(expireDays == null ? 1 : expireDays); }else { log.error("未定义的存储类型:{}", storageType); } } @Scheduled(cron = "0/3 * * * * ? ") public void execute() { @@ -151,4 +164,32 @@ return candidate; } private void clearFileLog(int days) { try { Path baseDir = Paths.get(loggingPath); if (!Files.exists(baseDir)) { return; } SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd"); long cutoff = System.currentTimeMillis() - (long) days * 24 * 60 * 60 * 1000; List<Path> dirs = Files.list(baseDir).filter(Files::isDirectory).collect(Collectors.toList()); for (Path dir : dirs) { String name = dir.getFileName().toString(); if (name.length() == 8 && name.chars().allMatch(Character::isDigit)) { Date d = sdf.parse(name); if (d.getTime() < cutoff) { List<Path> all = Files.walk(dir).sorted(Comparator.reverseOrder()).collect(Collectors.toList()); for (Path p : all) { try { Files.deleteIfExists(p); } catch (Exception ignored) {} } } } } } catch (Exception e) { log.error("设备日志文件清理失败", e); } } } src/main/resources/application.yml
@@ -50,7 +50,10 @@ mainProcessPlugin: FakeProcess # 设备日志存储方式 mysql file deviceLogStorage: # 设备日志存储方式 mysql file type: file # file类型存储地址 loggingPath: ./stock/out/@pom.build.finalName@/deviceLogs # 日志过期时间 单位天 expireDays: 7