diff options
Diffstat (limited to 'internal/logging/manager.go')
| -rw-r--r-- | internal/logging/manager.go | 48 |
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) +} + |
