fix for file leak

This commit is contained in:
Cytown 2026-03-10 12:37:20 +08:00
parent 4a8a3ae90e
commit ab948839b5

View file

@ -33,6 +33,7 @@ var (
currentLevel = INFO currentLevel = INFO
logger zerolog.Logger logger zerolog.Logger
fileLogger zerolog.Logger fileLogger zerolog.Logger
logFile *os.File
once sync.Once once sync.Once
mu sync.RWMutex mu sync.RWMutex
) )
@ -72,18 +73,29 @@ func EnableFileLogging(filePath string) error {
return fmt.Errorf("failed to create log directory: %w", err) 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 { if err != nil {
return fmt.Errorf("failed to open log file: %w", err) 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 return nil
} }
func DisableFileLogging() { func DisableFileLogging() {
mu.Lock() mu.Lock()
defer mu.Unlock() defer mu.Unlock()
if logFile != nil {
logFile.Close()
logFile = nil
}
fileLogger = zerolog.Logger{} fileLogger = zerolog.Logger{}
} }