From 58dc0727a11481c127fc6111b73fa309b03505b5 Mon Sep 17 00:00:00 2001
From: Junjie <DELL@qq.com>
Date: 星期四, 11 十二月 2025 18:54:36 +0800
Subject: [PATCH] #AI
---
src/main/java/com/zy/ai/log/AiLogAppender.java | 53 +++++++++++++++++++++++++++++++++++++++++++++++++++++
1 files changed, 53 insertions(+), 0 deletions(-)
diff --git a/src/main/java/com/zy/ai/log/AiLogAppender.java b/src/main/java/com/zy/ai/log/AiLogAppender.java
new file mode 100644
index 0000000..9a25289
--- /dev/null
+++ b/src/main/java/com/zy/ai/log/AiLogAppender.java
@@ -0,0 +1,53 @@
+package com.zy.ai.log;
+
+import ch.qos.logback.classic.spi.ILoggingEvent;
+import ch.qos.logback.core.AppenderBase;
+
+import java.time.Instant;
+import java.time.ZoneId;
+import java.time.format.DateTimeFormatter;
+import java.util.List;
+import java.util.concurrent.LinkedBlockingDeque;
+import java.util.stream.Collectors;
+
+public class AiLogAppender extends AppenderBase<ILoggingEvent> {
+
+ // 淇濆瓨鏈�杩� 2000 鏉℃棩蹇�
+ private static final LinkedBlockingDeque<String> LOG_BUFFER = new LinkedBlockingDeque<>(2000);
+
+ private static final DateTimeFormatter TIME_FORMATTER =
+ DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss.SSS")
+ .withZone(ZoneId.systemDefault());
+
+ @Override
+ protected void append(ILoggingEvent event) {
+ String time = TIME_FORMATTER.format(Instant.ofEpochMilli(event.getTimeStamp()));
+ String thread = event.getThreadName();
+ String level = event.getLevel().toString();
+ String loggerName = event.getLoggerName();
+ String message = event.getFormattedMessage();
+
+ String logLine = String.format(
+ "%s [%s] %-5s %s - %s",
+ time,
+ thread,
+ level,
+ loggerName,
+ message
+ );
+
+ // 鏀捐繘鐜舰缂撳啿鍖�
+ if (LOG_BUFFER.remainingCapacity() == 0) {
+ LOG_BUFFER.pollFirst(); // 绉婚櫎鏈�鏃х殑
+ }
+ LOG_BUFFER.offerLast(logLine);
+ }
+
+ public static List<String> getRecentLogs(int limit) {
+ int size = LOG_BUFFER.size();
+ int skip = Math.max(0, size - limit);
+ return LOG_BUFFER.stream()
+ .skip(skip)
+ .collect(Collectors.toList());
+ }
+}
\ No newline at end of file
--
Gitblit v1.9.1