|
- package logger
-
- import (
- "io"
- "log/slog"
- "os"
- )
-
- // CreateLogger creates a logger writing to both stderr and the given file.
- // If the file cannot be opened, returns a logger that writes only to stderr and a no-op cleanup.
- // Callers can check whether logging to file is active if needed.
- func CreateLogger(fname string) (*slog.Logger, func()) {
- f, err := os.OpenFile(fname, os.O_CREATE|os.O_WRONLY|os.O_APPEND, 0666)
- if err != nil {
- return slog.New(slog.NewJSONHandler(os.Stderr, nil)), func() {}
- }
- w := io.MultiWriter(os.Stderr, f)
- logger := slog.New(slog.NewJSONHandler(w, nil))
- cleanup := func() { f.Close() }
- return logger, cleanup
- }
|