diff --git a/msg-notices/msg-notices-client/src/main/java/cn/axzo/msg/center/notices/client/util/XxlAppender.java b/msg-notices/msg-notices-client/src/main/java/cn/axzo/msg/center/notices/client/util/XxlAppender.java index bd4dffec..6bdc890a 100644 --- a/msg-notices/msg-notices-client/src/main/java/cn/axzo/msg/center/notices/client/util/XxlAppender.java +++ b/msg-notices/msg-notices-client/src/main/java/cn/axzo/msg/center/notices/client/util/XxlAppender.java @@ -6,16 +6,19 @@ import ch.qos.logback.core.encoder.Encoder; import ch.qos.logback.core.encoder.LayoutWrappingEncoder; import com.xxl.job.core.log.XxlJobFileAppender; +import java.util.concurrent.locks.ReentrantLock; + /** * @author yanglin */ public class XxlAppender extends UnsynchronizedAppenderBase { - protected Encoder encoder; + private final ReentrantLock lock = new ReentrantLock(false); + private Encoder encoder; @SuppressWarnings("unused") public void setLayout(Layout layout) { - LayoutWrappingEncoder lwe = new LayoutWrappingEncoder(); + LayoutWrappingEncoder lwe = new LayoutWrappingEncoder<>(); lwe.setLayout(layout); lwe.setContext(context); this.encoder = lwe; @@ -28,7 +31,16 @@ public class XxlAppender extends UnsynchronizedAppenderBase { if (encoder == null) return; byte[] bytes = encoder.encode(event); String message = new String(bytes); - XxlJobFileAppender.appendLog(logFileName, message); + lock.lock(); + try { + XxlJobFileAppender.appendLog(logFileName, message); + } catch (Exception e) { + //noinspection CallToPrintStackTrace + e.printStackTrace(); + } + finally { + lock.unlock(); + } } } \ No newline at end of file