add:添加日志删除功能

This commit is contained in:
zhangzq
2026-06-18 15:05:07 +08:00
parent b14042dd68
commit 7b0a86dd42
5 changed files with 87 additions and 38 deletions

View File

@@ -39,7 +39,7 @@ public class LuceneLogController {
}
@DeleteMapping("/clearLogs")
//("清空日志")
public ResponseEntity<Object> clearLogs(@RequestBody LogQuery query) {
public ResponseEntity<Object> clearLogs(@RequestBody(required = false) LogQuery query) {
luceneLogService.clearLogs(query);
return new ResponseEntity<>(HttpStatus.OK);
}

View File

@@ -44,4 +44,9 @@ public class LogQuery {
private Integer size = 20;
private Integer page = 1;
/**
* 日志保留天数null 或 0 表示全部删除
*/
private Integer retainDays;
}

View File

@@ -28,7 +28,6 @@ import java.nio.file.Paths;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Date;
import java.util.List;
@@ -46,13 +45,20 @@ public class LuceneLogServiceImpl implements LuceneLogService {
try {
IndexWriter indexWriter = LuceneAppender.indexWriter;
if (indexWriter != null){
BooleanQuery.Builder booleanQueryBuilder = new BooleanQuery.Builder();
DateTime offset = DateUtil.offset(new Date(), DateField.HOUR_OF_DAY, -10);
TermRangeQuery termRangeQuery = new TermRangeQuery(
"requestTime",null,
new BytesRef(DateUtil.format(offset, "yyyy-MM-dd HH:mm:ss.SSS")), true, true);
booleanQueryBuilder.add(termRangeQuery,BooleanClause.Occur.MUST);
indexWriter.deleteDocuments(termRangeQuery);
Integer retainDays = query == null ? null : query.getRetainDays();
Query deleteQuery;
if (retainDays == null || retainDays <= 0) {
deleteQuery = new MatchAllDocsQuery();
} else {
DateTime cutoff = DateUtil.offset(new Date(), DateField.DAY_OF_YEAR, -retainDays);
deleteQuery = new TermRangeQuery(
"requestTime",
null,
new BytesRef(DateUtil.format(cutoff, "yyyy-MM-dd HH:mm:ss.SSS")),
true,
true);
}
indexWriter.deleteDocuments(deleteQuery);
indexWriter.commit();
}
}catch (Exception ex){