Class LogStreamManager

java.lang.Object
com.ultikits.ultitools.manager.LogStreamManager
All Implemented Interfaces:
org.bukkit.event.Listener

@Internal public class LogStreamManager extends Object implements org.bukkit.event.Listener
日志流管理器 负责实时监控服务器日志并通过WebSocket传输到UltiPanel
Version:
2.0.0
Author:
UltiKits
  • Field Details

  • Constructor Details

    • LogStreamManager

      private LogStreamManager()
  • Method Details

    • getInstance

      public static LogStreamManager getInstance()
    • initialize

      public void initialize(UltiPanelWebSocketClient client)
      初始化日志流管理器
    • loadBatchConfiguration

      private void loadBatchConfiguration()
      从配置文件加载批量发送配置
    • sendInitializationLogs

      private void sendInitializationLogs()
      发送初始化完成相关日志
    • handleLogStreamMessage

      public void handleLogStreamMessage(com.google.gson.JsonObject data)
      处理日志流消息
    • handleConfigUpdate

      private void handleConfigUpdate(com.google.gson.JsonObject data, String clientId)
      处理配置更新
    • startLogStream

      public void startLogStream(String clientId, String level)
      开始日志流
    • startLogStream

      public void startLogStream(String clientId)
      开始日志流(兼容旧版本)
    • stopLogStream

      public void stopLogStream(String clientId)
      停止日志流
    • pauseLogStream

      public void pauseLogStream(String clientId)
      暂停日志流
    • resumeLogStream

      public void resumeLogStream(String clientId)
      恢复日志流
    • sendStreamResponse

      private void sendStreamResponse(String clientId, String status, String message)
      发送流响应消息
    • sendErrorResponse

      private void sendErrorResponse(String clientId, String error)
      发送错误响应
    • sendStreamStatus

      private void sendStreamStatus(String clientId)
      发送流状态
    • isStreaming

      public boolean isStreaming()
      获取当前流状态
    • getSubscriberCount

      public int getSubscriberCount()
      获取订阅客户端数量
    • sendCustomLog

      public void sendCustomLog(String level, String message, String source)
      直接发送自定义日志消息 用于插件特定事件的日志记录
    • sendPlayerEventLog

      public void sendPlayerEventLog(String eventType, String playerName, String message)
      发送玩家事件日志
    • sendPluginActionLog

      public void sendPluginActionLog(String action, String details)
      发送插件操作日志
    • onPlayerJoin

      public void onPlayerJoin(org.bukkit.event.player.PlayerJoinEvent event)
    • onPlayerQuit

      public void onPlayerQuit(org.bukkit.event.player.PlayerQuitEvent event)
    • onServerLoad

      public void onServerLoad(org.bukkit.event.server.ServerLoadEvent event)
    • getServerId

      private String getServerId()
      获取服务器ID
    • shutdown

      public void shutdown()
      关闭日志流管理器
    • detachAllSystemLogHandlers

      private void detachAllSystemLogHandlers()
      摘掉 JVM root logger 上所有本框架的 SystemLogHandler

      刻意按类型扫描并全部移除,而不是只移除 this.systemLogHandler:在本方法存在之前, 每次重连成功都会往 root logger 上多挂一个,字段里只留得住最后那一个,先前泄漏的那些 没有任何引用能指到、也就永远摘不掉。按类型扫一遍才能把历史欠账一并清干净,这也是 「handler 数量恒为 1」这条验收唯一能成立的写法。见 issue #181。