fix(ccdi-project): remove local upload log files
This commit is contained in:
@@ -1,110 +0,0 @@
|
||||
package com.ruoyi.ccdi.project.log;
|
||||
|
||||
import ch.qos.logback.classic.LoggerContext;
|
||||
import ch.qos.logback.classic.PatternLayout;
|
||||
import ch.qos.logback.classic.spi.ILoggingEvent;
|
||||
import ch.qos.logback.core.FileAppender;
|
||||
import ch.qos.logback.core.UnsynchronizedAppenderBase;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.slf4j.ILoggerFactory;
|
||||
import org.slf4j.LoggerFactory;
|
||||
|
||||
import java.io.File;
|
||||
import java.text.SimpleDateFormat;
|
||||
import java.util.Date;
|
||||
|
||||
/**
|
||||
* File upload batch log appender.
|
||||
*/
|
||||
@Slf4j
|
||||
public class FileUploadLogAppender extends UnsynchronizedAppenderBase<ILoggingEvent> {
|
||||
|
||||
private static final ThreadLocal<FileAppender<ILoggingEvent>> currentAppender = new ThreadLocal<>();
|
||||
|
||||
private PatternLayout layout;
|
||||
|
||||
@Override
|
||||
public void start() {
|
||||
LoggerContext loggerContext = resolveLoggerContext();
|
||||
setContext(loggerContext);
|
||||
|
||||
this.layout = new PatternLayout();
|
||||
this.layout.setPattern("%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n");
|
||||
this.layout.setContext(loggerContext);
|
||||
this.layout.start();
|
||||
|
||||
super.start();
|
||||
log.info("【文件上传日志】FileUploadLogAppender已启动");
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void append(ILoggingEvent event) {
|
||||
FileAppender<ILoggingEvent> appender = currentAppender.get();
|
||||
if (appender != null) {
|
||||
appender.doAppend(event);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Create a dedicated batch log file.
|
||||
*
|
||||
* @param uploadPath upload root path from ruoyi.profile
|
||||
* @param projectId project id
|
||||
* @param batchId batch id
|
||||
*/
|
||||
public static void createBatchLogFile(String uploadPath, Long projectId, String batchId) {
|
||||
try {
|
||||
LoggerContext loggerContext = resolveLoggerContext();
|
||||
|
||||
String timestamp = new SimpleDateFormat("yyyyMMdd-HHmmss").format(new Date());
|
||||
String logDirPath = uploadPath + File.separator + "logs" + File.separator
|
||||
+ "file-upload" + File.separator + projectId;
|
||||
|
||||
File logDir = new File(logDirPath);
|
||||
if (!logDir.exists() && !logDir.mkdirs()) {
|
||||
throw new IllegalStateException("无法创建批次日志目录: " + logDirPath);
|
||||
}
|
||||
|
||||
String logFilePath = logDirPath + File.separator + timestamp + ".log";
|
||||
|
||||
FileAppender<ILoggingEvent> appender = new FileAppender<>();
|
||||
appender.setContext(loggerContext);
|
||||
appender.setFile(logFilePath);
|
||||
|
||||
PatternLayout layout = new PatternLayout();
|
||||
layout.setPattern("%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n");
|
||||
layout.setContext(loggerContext);
|
||||
layout.start();
|
||||
|
||||
appender.setLayout(layout);
|
||||
appender.setAppend(true);
|
||||
appender.start();
|
||||
|
||||
currentAppender.set(appender);
|
||||
|
||||
log.info("【文件上传日志】创建批次日志文件成功: path={}, batchId={}", logFilePath, batchId);
|
||||
} catch (Exception e) {
|
||||
log.error("【文件上传日志】创建批次日志文件失败: projectId={}, batchId={}", projectId, batchId, e);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Close the current batch log file.
|
||||
*/
|
||||
public static void closeBatchLogFile() {
|
||||
FileAppender<ILoggingEvent> appender = currentAppender.get();
|
||||
if (appender != null) {
|
||||
appender.stop();
|
||||
currentAppender.remove();
|
||||
log.info("【文件上传日志】关闭批次日志文件");
|
||||
}
|
||||
}
|
||||
|
||||
private static LoggerContext resolveLoggerContext() {
|
||||
ILoggerFactory loggerFactory = LoggerFactory.getILoggerFactory();
|
||||
if (loggerFactory instanceof LoggerContext loggerContext) {
|
||||
return loggerContext;
|
||||
}
|
||||
throw new IllegalStateException("SLF4J logger factory is not a Logback LoggerContext");
|
||||
}
|
||||
}
|
||||
@@ -7,7 +7,6 @@ import com.ruoyi.ccdi.project.domain.dto.CcdiFileUploadQueryDTO;
|
||||
import com.ruoyi.ccdi.project.domain.entity.CcdiBankStatement;
|
||||
import com.ruoyi.ccdi.project.domain.entity.CcdiFileUploadRecord;
|
||||
import com.ruoyi.ccdi.project.domain.vo.CcdiFileUploadStatisticsVO;
|
||||
import com.ruoyi.ccdi.project.log.FileUploadLogAppender;
|
||||
import com.ruoyi.ccdi.project.mapper.CcdiBankStatementMapper;
|
||||
import com.ruoyi.ccdi.project.mapper.CcdiFileUploadRecordMapper;
|
||||
import com.ruoyi.ccdi.project.mapper.CcdiProjectMapper;
|
||||
@@ -269,12 +268,8 @@ public class CcdiFileUploadServiceImpl implements ICcdiFileUploadService {
|
||||
String batchId) {
|
||||
log.info("【文件上传】调度线程启动: projectId={}, batchId={}", projectId, batchId);
|
||||
|
||||
// 创建批次日志文件
|
||||
FileUploadLogAppender.createBatchLogFile(uploadPath, projectId, batchId);
|
||||
|
||||
try {
|
||||
// 循环提交任务
|
||||
for (int i = 0; i < tempFilePaths.size(); i++) {
|
||||
// 循环提交任务
|
||||
for (int i = 0; i < tempFilePaths.size(); i++) {
|
||||
// Critical Fix #6: 检查线程中断状态
|
||||
if (Thread.currentThread().isInterrupted()) {
|
||||
log.warn("【文件上传】调度线程被中断,停止提交剩余任务");
|
||||
@@ -318,11 +313,7 @@ public class CcdiFileUploadServiceImpl implements ICcdiFileUploadService {
|
||||
}
|
||||
}
|
||||
|
||||
log.info("【文件上传】调度线程完成: projectId={}, batchId={}", projectId, batchId);
|
||||
} finally {
|
||||
// 关闭批次日志文件
|
||||
FileUploadLogAppender.closeBatchLogFile();
|
||||
}
|
||||
log.info("【文件上传】调度线程完成: projectId={}, batchId={}", projectId, batchId);
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
Reference in New Issue
Block a user