fix(cmd): close the log file on shutdown

This commit is contained in:
ayn2op 2026-04-18 14:02:05 -04:00
parent 73dbd1b315
commit 3d03359078
2 changed files with 8 additions and 5 deletions

View file

@ -32,9 +32,11 @@ func Run() error {
level = slog.LevelError level = slog.LevelError
} }
if err := logger.Load(*logPath, level); err != nil { logFile, err := logger.Load(*logPath, level)
if err != nil {
return fmt.Errorf("failed to load logger: %w", err) return fmt.Errorf("failed to load logger: %w", err)
} }
defer logFile.Close()
cfg, err := config.Load(*configPath) cfg, err := config.Load(*configPath)
if err != nil { if err != nil {

View file

@ -2,6 +2,7 @@ package logger
import ( import (
"fmt" "fmt"
"io"
"log/slog" "log/slog"
"os" "os"
"path/filepath" "path/filepath"
@ -16,18 +17,18 @@ func DefaultPath() string {
} }
// Load opens the log file and configures default logger. // Load opens the log file and configures default logger.
func Load(path string, level slog.Level) error { func Load(path string, level slog.Level) (io.Closer, error) {
if err := os.MkdirAll(filepath.Dir(path), os.ModePerm); err != nil { if err := os.MkdirAll(filepath.Dir(path), os.ModePerm); err != nil {
return err return nil, err
} }
file, err := os.OpenFile(path, os.O_CREATE|os.O_WRONLY|os.O_TRUNC, os.ModePerm) file, err := os.OpenFile(path, os.O_CREATE|os.O_WRONLY|os.O_TRUNC, os.ModePerm)
if err != nil { if err != nil {
return fmt.Errorf("failed to open log file: %w", err) return nil, fmt.Errorf("failed to open log file: %w", err)
} }
opts := &slog.HandlerOptions{Level: level} opts := &slog.HandlerOptions{Level: level}
handler := slog.NewTextHandler(file, opts) handler := slog.NewTextHandler(file, opts)
slog.SetDefault(slog.New(handler)) slog.SetDefault(slog.New(handler))
return nil return file, nil
} }