Package com.ultikits.ultitools.manager
Class LogStreamManager
java.lang.Object
com.ultikits.ultitools.manager.LogStreamManager
- All Implemented Interfaces:
org.bukkit.event.Listener
日志流管理器
负责实时监控服务器日志并通过WebSocket传输到UltiPanel
- Version:
- 2.0.0
- Author:
- UltiKits
-
Field Summary
FieldsModifier and TypeFieldDescriptionprivate final com.google.gson.Gsonprivate static LogStreamManagerprivate UltiPanelLogTransmitterprivate final AtomicBooleanprivate final ConcurrentHashMap<String, Boolean> private SystemLogHandlerprivate UltiPanelWebSocketClient -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionprivate void摘掉 JVM root logger 上所有本框架的SystemLogHandler。static LogStreamManagerprivate String获取服务器IDint获取订阅客户端数量private voidhandleConfigUpdate(com.google.gson.JsonObject data, String clientId) 处理配置更新voidhandleLogStreamMessage(com.google.gson.JsonObject data) 处理日志流消息voidinitialize(UltiPanelWebSocketClient client) 初始化日志流管理器boolean获取当前流状态private void从配置文件加载批量发送配置voidonPlayerJoin(org.bukkit.event.player.PlayerJoinEvent event) voidonPlayerQuit(org.bukkit.event.player.PlayerQuitEvent event) voidonServerLoad(org.bukkit.event.server.ServerLoadEvent event) voidpauseLogStream(String clientId) 暂停日志流voidresumeLogStream(String clientId) 恢复日志流voidsendCustomLog(String level, String message, String source) 直接发送自定义日志消息 用于插件特定事件的日志记录private voidsendErrorResponse(String clientId, String error) 发送错误响应private void发送初始化完成相关日志voidsendPlayerEventLog(String eventType, String playerName, String message) 发送玩家事件日志voidsendPluginActionLog(String action, String details) 发送插件操作日志private voidsendStreamResponse(String clientId, String status, String message) 发送流响应消息private voidsendStreamStatus(String clientId) 发送流状态voidshutdown()关闭日志流管理器voidstartLogStream(String clientId) 开始日志流(兼容旧版本)voidstartLogStream(String clientId, String level) 开始日志流voidstopLogStream(String clientId) 停止日志流
-
Field Details
-
instance
-
webSocketClient
-
streaming
-
subscribedClients
-
gson
private final com.google.gson.Gson gson -
logTransmitter
-
systemLogHandler
-
-
Constructor Details
-
LogStreamManager
private LogStreamManager()
-
-
Method Details
-
getInstance
-
initialize
初始化日志流管理器 -
loadBatchConfiguration
private void loadBatchConfiguration()从配置文件加载批量发送配置 -
sendInitializationLogs
private void sendInitializationLogs()发送初始化完成相关日志 -
handleLogStreamMessage
public void handleLogStreamMessage(com.google.gson.JsonObject data) 处理日志流消息 -
handleConfigUpdate
处理配置更新 -
startLogStream
开始日志流 -
startLogStream
开始日志流(兼容旧版本) -
stopLogStream
停止日志流 -
pauseLogStream
暂停日志流 -
resumeLogStream
恢复日志流 -
sendStreamResponse
发送流响应消息 -
sendErrorResponse
发送错误响应 -
sendStreamStatus
发送流状态 -
isStreaming
public boolean isStreaming()获取当前流状态 -
getSubscriberCount
public int getSubscriberCount()获取订阅客户端数量 -
sendCustomLog
直接发送自定义日志消息 用于插件特定事件的日志记录 -
sendPlayerEventLog
发送玩家事件日志 -
sendPluginActionLog
发送插件操作日志 -
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
获取服务器ID -
shutdown
public void shutdown()关闭日志流管理器 -
detachAllSystemLogHandlers
private void detachAllSystemLogHandlers()摘掉 JVM root logger 上所有本框架的SystemLogHandler。刻意按类型扫描并全部移除,而不是只移除
this.systemLogHandler:在本方法存在之前, 每次重连成功都会往 root logger 上多挂一个,字段里只留得住最后那一个,先前泄漏的那些 没有任何引用能指到、也就永远摘不掉。按类型扫一遍才能把历史欠账一并清干净,这也是 「handler 数量恒为 1」这条验收唯一能成立的写法。见 issue #181。
-