Class UltiPanelLogTransmitter

java.lang.Object
com.ultikits.ultitools.manager.UltiPanelLogTransmitter

@Internal public class UltiPanelLogTransmitter extends Object
UltiPanel日志传输器 按照API文档规范实现日志传输功能
Version:
1.0.0
Author:
UltiKits
  • Field Details

    • MAX_QUEUE_SIZE

      private static final int MAX_QUEUE_SIZE
      See Also:
    • webSocketClient

      private final UltiPanelWebSocketClient webSocketClient
    • serverId

      private final String serverId
    • logTransmissionEnabled

      private final AtomicBoolean logTransmissionEnabled
    • externalDrainMode

      private final AtomicBoolean externalDrainMode
    • batchEnabled

      private boolean batchEnabled
    • batchSize

      private int batchSize
    • intervalMs

      private int intervalMs
    • logQueue

      private final ConcurrentLinkedQueue<com.google.gson.JsonObject> logQueue
    • batchScheduler

      private final ScheduledExecutorService batchScheduler
  • Constructor Details

    • UltiPanelLogTransmitter

      public UltiPanelLogTransmitter(UltiPanelWebSocketClient webSocketClient, String serverId)
      构造函数
      Parameters:
      webSocketClient - WebSocket客户端
      serverId - 服务器ID
  • Method Details

    • sendLog

      public void sendLog(String level, String message, String source, Throwable throwable)
      发送日志消息到后端
      Parameters:
      level - 日志级别 (info, warning, error, debug)
      message - 日志消息
      source - 日志来源 (如: "server", "plugin:名称")
      throwable - 异常对象(可选)
    • info

      public void info(String message, String source)
      便捷方法:发送不同级别的日志
    • warning

      public void warning(String message, String source)
    • error

      public void error(String message, String source, Throwable throwable)
    • debug

      public void debug(String message, String source)
    • 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

      private String getStackTrace(Throwable throwable)
      获取异常堆栈跟踪字符串
    • determineLoggerName

      private String determineLoggerName(String source)
      确定记录器名称
    • getDefaultServerId

      private String getDefaultServerId()
      获取默认服务器ID
    • setLogTransmissionEnabled

      public void setLogTransmissionEnabled(boolean enabled)
      启用/禁用日志传输
    • isLogTransmissionEnabled

      public boolean isLogTransmissionEnabled()
      检查日志传输是否启用
    • getQueueSize

      public int getQueueSize()
      获取当前队列大小
    • flushLogs

      public void flushLogs()
      立即发送队列中的所有日志 临时禁用外部排空模式以确保日志被发送
    • shutdown

      public void shutdown()
      关闭日志传输器