优化流式传输&fix bugs
This commit is contained in:
36
internal/logging/websocket_hook.go
Normal file
36
internal/logging/websocket_hook.go
Normal file
@@ -0,0 +1,36 @@
|
||||
// Filename: internal/logging/websocket_hook.go
|
||||
package logging
|
||||
|
||||
import (
|
||||
"gemini-balancer/internal/config"
|
||||
"gemini-balancer/internal/handlers"
|
||||
|
||||
"github.com/sirupsen/logrus"
|
||||
)
|
||||
|
||||
type WebSocketHook struct {
|
||||
broadcaster func(*logrus.Entry)
|
||||
}
|
||||
|
||||
func NewWebSocketHook(broadcaster func(*logrus.Entry)) *WebSocketHook {
|
||||
return &WebSocketHook{broadcaster: broadcaster}
|
||||
}
|
||||
|
||||
func (h *WebSocketHook) Levels() []logrus.Level {
|
||||
return logrus.AllLevels
|
||||
}
|
||||
|
||||
func (h *WebSocketHook) Fire(entry *logrus.Entry) error {
|
||||
if h.broadcaster != nil {
|
||||
go h.broadcaster(entry)
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
func NewLoggerWithWebSocket(cfg *config.Config) (*logrus.Logger, *handlers.WebSocketHandler) {
|
||||
logger := NewLogger(cfg)
|
||||
wsHandler := handlers.NewWebSocketHandler(logger)
|
||||
hook := NewWebSocketHook(wsHandler.BroadcastLog)
|
||||
logger.AddHook(hook)
|
||||
return logger, wsHandler
|
||||
}
|
||||
Reference in New Issue
Block a user