summaryrefslogtreecommitdiffhomepage
path: root/internal/logging/manager.go
diff options
context:
space:
mode:
Diffstat (limited to 'internal/logging/manager.go')
-rw-r--r--internal/logging/manager.go48
1 files changed, 48 insertions, 0 deletions
diff --git a/internal/logging/manager.go b/internal/logging/manager.go
new file mode 100644
index 000000000..e8e96520b
--- /dev/null
+++ b/internal/logging/manager.go
@@ -0,0 +1,48 @@
+package logging
+
+import (
+ "context"
+ "sync"
+)
+
+// Manager handles logging management
+type Manager struct {
+ service Service
+ mu sync.RWMutex
+}
+
+// Global instance of the logging manager
+var globalManager *Manager
+
+// InitManager initializes the global logging manager with the provided service
+func InitManager(service Service) {
+ globalManager = &Manager{
+ service: service,
+ }
+
+ // Subscribe to log events if needed
+ go func() {
+ ctx := context.Background()
+ _ = service.Subscribe(ctx) // Just subscribing to keep the channel open
+ }()
+}
+
+// GetService returns the logging service
+func GetService() Service {
+ if globalManager == nil {
+ return nil
+ }
+
+ globalManager.mu.RLock()
+ defer globalManager.mu.RUnlock()
+
+ return globalManager.service
+}
+
+func Create(ctx context.Context, log Log) error {
+ if globalManager == nil {
+ return nil
+ }
+ return globalManager.service.Create(ctx, log)
+}
+