From ab948839b543ecfe9c6b4c6c7725bdf726212715 Mon Sep 17 00:00:00 2001 From: Cytown Date: Tue, 10 Mar 2026 12:37:20 +0800 Subject: [PATCH] fix for file leak --- pkg/logger/logger.go | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/pkg/logger/logger.go b/pkg/logger/logger.go index c292e68ee..aa99e1f6d 100644 --- a/pkg/logger/logger.go +++ b/pkg/logger/logger.go @@ -33,6 +33,7 @@ var ( currentLevel = INFO logger zerolog.Logger fileLogger zerolog.Logger + logFile *os.File once sync.Once mu sync.RWMutex ) @@ -72,18 +73,29 @@ func EnableFileLogging(filePath string) error { return fmt.Errorf("failed to create log directory: %w", err) } - file, err := os.OpenFile(filePath, os.O_CREATE|os.O_WRONLY|os.O_APPEND, 0o644) + newFile, err := os.OpenFile(filePath, os.O_CREATE|os.O_WRONLY|os.O_APPEND, 0o644) if err != nil { return fmt.Errorf("failed to open log file: %w", err) } - fileLogger = zerolog.New(file).With().Timestamp().Caller().Logger() + // Close old file if exists + if logFile != nil { + logFile.Close() + } + + logFile = newFile + fileLogger = zerolog.New(logFile).With().Timestamp().Caller().Logger() return nil } func DisableFileLogging() { mu.Lock() defer mu.Unlock() + + if logFile != nil { + logFile.Close() + logFile = nil + } fileLogger = zerolog.Logger{} }