From eb15113ed3ffd7cb0bf9b38306f4a0db9ec241aa Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=A1=94=E5=AD=90=E7=8C=ABpc?= <578961953@qq.com> Date: Fri, 29 Apr 2022 18:18:45 +0800 Subject: [PATCH] Fix Modify the log queue traversal method (#9953) --- .../dubbo/rpc/filter/AccessLogFilter.java | 18 ++++++++---------- 1 file changed, 8 insertions(+), 10 deletions(-) diff --git a/dubbo-rpc/dubbo-rpc-api/src/main/java/org/apache/dubbo/rpc/filter/AccessLogFilter.java b/dubbo-rpc/dubbo-rpc-api/src/main/java/org/apache/dubbo/rpc/filter/AccessLogFilter.java index a81d1ba2db31..483b31d068b6 100644 --- a/dubbo-rpc/dubbo-rpc-api/src/main/java/org/apache/dubbo/rpc/filter/AccessLogFilter.java +++ b/dubbo-rpc/dubbo-rpc-api/src/main/java/org/apache/dubbo/rpc/filter/AccessLogFilter.java @@ -141,7 +141,6 @@ private void writeLogQueueToFile(String accessLog, Queue logQueue processWithAccessKeyLogger(logQueue, file); } } catch (Exception e) { - logQueue.poll(); logger.error(e.getMessage(), e); } } @@ -157,22 +156,21 @@ private void writeLogToFile() { } private void processWithAccessKeyLogger(Queue logQueue, File file) throws IOException { - try (FileWriter writer = new FileWriter(file, true)) { - for (Iterator iterator = logQueue.iterator(); - iterator.hasNext(); - iterator.remove()) { - writer.write(iterator.next().getLogMessage()); + FileWriter writer = new FileWriter(file, true) + try { + while (!logQueue.isEmpty()) { + writer.write(logQueue.poll().getLogMessage()); writer.write(System.getProperty(LINE_SEPARATOR)); } + }finally { writer.flush(); + writer.close(); } } private void processWithServiceLogger(Queue logQueue) { - for (Iterator iterator = logQueue.iterator(); - iterator.hasNext(); - iterator.remove()) { - AccessLogData logData = iterator.next(); + while (!logQueue.isEmpty()) { + AccessLogData logData = logQueue.poll(); LoggerFactory.getLogger(LOG_KEY + "." + logData.getServiceName()).info(logData.getLogMessage()); } }