Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
22 changes: 3 additions & 19 deletions internal/logger/file_logger.go
Original file line number Diff line number Diff line change
Expand Up @@ -28,14 +28,6 @@ var (
// InitFileLogger initializes the global file logger
// If the log directory doesn't exist and can't be created, falls back to stdout
func InitFileLogger(logDir, fileName string) error {
globalLoggerMu.Lock()
defer globalLoggerMu.Unlock()

if globalFileLogger != nil {
// Close existing logger
globalFileLogger.Close()
}

fl := &FileLogger{
logDir: logDir,
fileName: fileName,
Expand All @@ -49,7 +41,7 @@ func InitFileLogger(logDir, fileName string) error {
log.Printf("WARNING: Falling back to stdout for logging")
fl.useFallback = true
fl.logger = log.New(os.Stdout, "", 0) // We'll add our own timestamp
globalFileLogger = fl
initGlobalFileLogger(fl)
return nil
}

Expand All @@ -58,7 +50,7 @@ func InitFileLogger(logDir, fileName string) error {

log.Printf("Logging to file: %s", filepath.Join(logDir, fileName))

globalFileLogger = fl
initGlobalFileLogger(fl)
return nil
}

Expand Down Expand Up @@ -155,13 +147,5 @@ func LogDebug(category, format string, args ...interface{}) {

// CloseGlobalLogger closes the global file logger
func CloseGlobalLogger() error {
globalLoggerMu.Lock()
defer globalLoggerMu.Unlock()

if globalFileLogger != nil {
err := globalFileLogger.Close()
globalFileLogger = nil
return err
}
return nil
return closeGlobalFileLogger()
}
83 changes: 83 additions & 0 deletions internal/logger/global_patterns.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,83 @@
package logger

// This file contains helper functions that encapsulate the common patterns
// for global logger initialization and cleanup. These helpers reduce code
// duplication while maintaining type safety.

// initGlobalFileLogger is a helper that encapsulates the common pattern for
// initializing a global FileLogger with proper mutex handling.
func initGlobalFileLogger(logger *FileLogger) {
globalLoggerMu.Lock()
defer globalLoggerMu.Unlock()

if globalFileLogger != nil {
globalFileLogger.Close()
}
globalFileLogger = logger
}

// closeGlobalFileLogger is a helper that encapsulates the common pattern for
// closing and clearing a global FileLogger with proper mutex handling.
func closeGlobalFileLogger() error {
globalLoggerMu.Lock()
defer globalLoggerMu.Unlock()

if globalFileLogger != nil {
err := globalFileLogger.Close()
globalFileLogger = nil
return err
}
return nil
}

// initGlobalJSONLLogger is a helper that encapsulates the common pattern for
// initializing a global JSONLLogger with proper mutex handling.
func initGlobalJSONLLogger(logger *JSONLLogger) {
globalJSONLMu.Lock()
defer globalJSONLMu.Unlock()

if globalJSONLLogger != nil {
globalJSONLLogger.Close()
}
globalJSONLLogger = logger
}

// closeGlobalJSONLLogger is a helper that encapsulates the common pattern for
// closing and clearing a global JSONLLogger with proper mutex handling.
func closeGlobalJSONLLogger() error {
globalJSONLMu.Lock()
defer globalJSONLMu.Unlock()

if globalJSONLLogger != nil {
err := globalJSONLLogger.Close()
globalJSONLLogger = nil
return err
}
return nil
}

// initGlobalMarkdownLogger is a helper that encapsulates the common pattern for
// initializing a global MarkdownLogger with proper mutex handling.
func initGlobalMarkdownLogger(logger *MarkdownLogger) {
globalMarkdownMu.Lock()
defer globalMarkdownMu.Unlock()

if globalMarkdownLogger != nil {
globalMarkdownLogger.Close()
}
globalMarkdownLogger = logger
}

// closeGlobalMarkdownLogger is a helper that encapsulates the common pattern for
// closing and clearing a global MarkdownLogger with proper mutex handling.
func closeGlobalMarkdownLogger() error {
globalMarkdownMu.Lock()
defer globalMarkdownMu.Unlock()

if globalMarkdownLogger != nil {
err := globalMarkdownLogger.Close()
globalMarkdownLogger = nil
return err
}
return nil
}
20 changes: 2 additions & 18 deletions internal/logger/jsonl_logger.go
Original file line number Diff line number Diff line change
Expand Up @@ -37,14 +37,6 @@ type JSONLRPCMessage struct {

// InitJSONLLogger initializes the global JSONL logger
func InitJSONLLogger(logDir, fileName string) error {
globalJSONLMu.Lock()
defer globalJSONLMu.Unlock()

if globalJSONLLogger != nil {
// Close existing logger
globalJSONLLogger.Close()
}

jl := &JSONLLogger{
logDir: logDir,
fileName: fileName,
Expand All @@ -59,7 +51,7 @@ func InitJSONLLogger(logDir, fileName string) error {
jl.logFile = file
jl.encoder = json.NewEncoder(file)

globalJSONLLogger = jl
initGlobalJSONLLogger(jl)
return nil
}

Expand Down Expand Up @@ -103,15 +95,7 @@ func (jl *JSONLLogger) LogMessage(entry *JSONLRPCMessage) error {

// CloseJSONLLogger closes the global JSONL logger
func CloseJSONLLogger() error {
globalJSONLMu.Lock()
defer globalJSONLMu.Unlock()

if globalJSONLLogger != nil {
err := globalJSONLLogger.Close()
globalJSONLLogger = nil
return err
}
return nil
return closeGlobalJSONLLogger()
}

// LogRPCMessageJSONL logs an RPC message to the global JSONL logger
Expand Down
22 changes: 3 additions & 19 deletions internal/logger/markdown_logger.go
Original file line number Diff line number Diff line change
Expand Up @@ -26,14 +26,6 @@ var (

// InitMarkdownLogger initializes the global markdown logger
func InitMarkdownLogger(logDir, fileName string) error {
globalMarkdownMu.Lock()
defer globalMarkdownMu.Unlock()

if globalMarkdownLogger != nil {
// Close existing logger
globalMarkdownLogger.Close()
}

ml := &MarkdownLogger{
logDir: logDir,
fileName: fileName,
Expand All @@ -44,14 +36,14 @@ func InitMarkdownLogger(logDir, fileName string) error {
if err != nil {
// File initialization failed - set fallback mode
ml.useFallback = true
globalMarkdownLogger = ml
initGlobalMarkdownLogger(ml)
return nil
}

ml.logFile = file
ml.initialized = false // Will be initialized on first write

globalMarkdownLogger = ml
initGlobalMarkdownLogger(ml)
return nil
}

Expand Down Expand Up @@ -222,13 +214,5 @@ func LogDebugMd(category, format string, args ...interface{}) {

// CloseMarkdownLogger closes the global markdown logger
func CloseMarkdownLogger() error {
globalMarkdownMu.Lock()
defer globalMarkdownMu.Unlock()

if globalMarkdownLogger != nil {
err := globalMarkdownLogger.Close()
globalMarkdownLogger = nil
return err
}
return nil
return closeGlobalMarkdownLogger()
}