diff --git a/doc/XXL-JOB官方文档.md b/doc/XXL-JOB官方文档.md index 1c087a4f..c6e0a866 100644 --- a/doc/XXL-JOB官方文档.md +++ b/doc/XXL-JOB官方文档.md @@ -1212,6 +1212,7 @@ Tips: 历史版本(V1.3.x)目前已经Release至稳定版本, 进入维护阶段 - 11、任务回调结果优化,支持展示在Rolling log中,方便问题排查; - 12、脚本任务异常Log输出优化; - 13、任务线程停止变量修饰符优化; +- 14、脚本任务Log文件流关闭优化; ### TODO LIST diff --git a/xxl-job-core/src/main/java/com/xxl/job/core/log/XxlJobFileAppender.java b/xxl-job-core/src/main/java/com/xxl/job/core/log/XxlJobFileAppender.java index 0c880968..ff89001a 100644 --- a/xxl-job-core/src/main/java/com/xxl/job/core/log/XxlJobFileAppender.java +++ b/xxl-job-core/src/main/java/com/xxl/job/core/log/XxlJobFileAppender.java @@ -115,23 +115,21 @@ public class XxlJobFileAppender { appendLog += "\r\n"; // append file content + FileOutputStream fos = null; try { - FileOutputStream fos = null; - try { - fos = new FileOutputStream(logFile, true); - fos.write(appendLog.getBytes("utf-8")); - fos.flush(); - } finally { - if (fos != null) { - try { - fos.close(); - } catch (IOException e) { - logger.error(e.getMessage(), e); - } - } - } + fos = new FileOutputStream(logFile, true); + fos.write(appendLog.getBytes("utf-8")); + fos.flush(); } catch (Exception e) { logger.error(e.getMessage(), e); + } finally { + if (fos != null) { + try { + fos.close(); + } catch (IOException e) { + logger.error(e.getMessage(), e); + } + } } } diff --git a/xxl-job-core/src/main/java/com/xxl/job/core/util/ScriptUtil.java b/xxl-job-core/src/main/java/com/xxl/job/core/util/ScriptUtil.java index 734d50fd..72f61bb7 100644 --- a/xxl-job-core/src/main/java/com/xxl/job/core/util/ScriptUtil.java +++ b/xxl-job-core/src/main/java/com/xxl/job/core/util/ScriptUtil.java @@ -60,7 +60,10 @@ public class ScriptUtil { // 标准输出:print (null if watchdog timeout) // 错误输出:logging + 异常 (still exists if watchdog timeout) // 标准输入 - try (FileOutputStream fileOutputStream = new FileOutputStream(logFile, true)) { + + FileOutputStream fileOutputStream = null; // + try { + fileOutputStream = new FileOutputStream(logFile, true); PumpStreamHandler streamHandler = new PumpStreamHandler(fileOutputStream, fileOutputStream, null); // command @@ -79,6 +82,15 @@ public class ScriptUtil { } catch (Exception e) { XxlJobLogger.log(e); return -1; + } finally { + if (fileOutputStream != null) { + try { + fileOutputStream.close(); + } catch (IOException e) { + XxlJobLogger.log(e); + } + + } } }