Package com.ultikits.ultitools.manager
Class UltiPanelLogTransmitter
java.lang.Object
com.ultikits.ultitools.manager.UltiPanelLogTransmitter
UltiPanel日志传输器
按照API文档规范实现日志传输功能
- Version:
- 1.0.0
- Author:
- UltiKits
-
Field Summary
FieldsModifier and TypeFieldDescriptionprivate booleanprivate final ScheduledExecutorServiceprivate intprivate final AtomicBooleanprivate intprivate final ConcurrentLinkedQueue<com.google.gson.JsonObject> private final AtomicBooleanprivate static final intprivate final Stringprivate final UltiPanelWebSocketClient -
Constructor Summary
ConstructorsConstructorDescriptionUltiPanelLogTransmitter(UltiPanelWebSocketClient webSocketClient, String serverId) 构造函数 -
Method Summary
Modifier and TypeMethodDescriptionprivate voidaddToBatch(com.google.gson.JsonObject logData) 添加日志到批量队列voidprivate StringdetermineLoggerName(String source) 确定记录器名称com.google.gson.JsonArraydrainQueue(int maxItems) 从队列中排空日志条目,返回JsonArray 供外部调用者(如ServerMonitorManager的batch_update)使用voidvoid立即发送队列中的所有日志 临时禁用外部排空模式以确保日志被发送private String获取默认服务器IDint获取当前队列大小private StringgetStackTrace(Throwable throwable) 获取异常堆栈跟踪字符串void便捷方法:发送不同级别的日志boolean检查是否处于外部排空模式boolean检查日志传输是否启用private void发送批量日志 当externalDrainMode为true时,仅丢弃超出队列上限的旧条目,不发送void发送日志消息到后端private voidsendLogImmediately(com.google.gson.JsonObject logData) 立即发送单条日志voidsetExternalDrainMode(boolean enabled) 设置外部排空模式 当启用时,sendBatch()不再自动发送日志,改由外部通过drainQueue()获取voidsetLogTransmissionEnabled(boolean enabled) 启用/禁用日志传输voidshutdown()关闭日志传输器private void启动批量发送任务void
-
Field Details
-
MAX_QUEUE_SIZE
private static final int MAX_QUEUE_SIZE- See Also:
-
webSocketClient
-
serverId
-
logTransmissionEnabled
-
externalDrainMode
-
batchEnabled
private boolean batchEnabled -
batchSize
private int batchSize -
intervalMs
private int intervalMs -
logQueue
-
batchScheduler
-
-
Constructor Details
-
UltiPanelLogTransmitter
构造函数- Parameters:
webSocketClient- WebSocket客户端serverId- 服务器ID
-
-
Method Details
-
sendLog
发送日志消息到后端- Parameters:
level- 日志级别 (info, warning, error, debug)message- 日志消息source- 日志来源 (如: "server", "plugin:名称")throwable- 异常对象(可选)
-
info
便捷方法:发送不同级别的日志 -
warning
-
error
-
debug
-
sendLogImmediately
private void sendLogImmediately(com.google.gson.JsonObject logData) 立即发送单条日志 -
addToBatch
private void addToBatch(com.google.gson.JsonObject logData) 添加日志到批量队列 -
startBatchSender
private void startBatchSender()启动批量发送任务 -
sendBatch
private void sendBatch()发送批量日志 当externalDrainMode为true时,仅丢弃超出队列上限的旧条目,不发送 -
drainQueue
public com.google.gson.JsonArray drainQueue(int maxItems) 从队列中排空日志条目,返回JsonArray 供外部调用者(如ServerMonitorManager的batch_update)使用- Parameters:
maxItems- 最多取出的条目数- Returns:
- 日志条目的JsonArray
-
setExternalDrainMode
public void setExternalDrainMode(boolean enabled) 设置外部排空模式 当启用时,sendBatch()不再自动发送日志,改由外部通过drainQueue()获取- Parameters:
enabled- 是否启用外部排空模式
-
isExternalDrainMode
public boolean isExternalDrainMode()检查是否处于外部排空模式 -
getStackTrace
获取异常堆栈跟踪字符串 -
determineLoggerName
确定记录器名称 -
getDefaultServerId
获取默认服务器ID -
setLogTransmissionEnabled
public void setLogTransmissionEnabled(boolean enabled) 启用/禁用日志传输 -
isLogTransmissionEnabled
public boolean isLogTransmissionEnabled()检查日志传输是否启用 -
getQueueSize
public int getQueueSize()获取当前队列大小 -
flushLogs
public void flushLogs()立即发送队列中的所有日志 临时禁用外部排空模式以确保日志被发送 -
shutdown
public void shutdown()关闭日志传输器
-