diff options
| author | Jeroen Wijenbergh <jeroen.wijenbergh@geant.org> | 2026-02-12 12:34:08 +0100 |
|---|---|---|
| committer | Jeroen Wijenbergh <jeroen.wijenbergh@geant.org> | 2026-02-12 12:59:03 +0100 |
| commit | a30ef6b27e578a4cf0a674b24f5b52b4c1516c63 (patch) | |
| tree | 27c7321cbceac2a487c1ba17151711de3d438a53 /internal/loglevel/loglevel.go | |
| parent | b00ce8214479c50e137db73c77b0cc1393c5e7d4 (diff) | |
All: Rename packages that sound useless or clash with std
Diffstat (limited to 'internal/loglevel/loglevel.go')
| -rw-r--r-- | internal/loglevel/loglevel.go | 37 |
1 files changed, 37 insertions, 0 deletions
diff --git a/internal/loglevel/loglevel.go b/internal/loglevel/loglevel.go new file mode 100644 index 0000000..74dd49f --- /dev/null +++ b/internal/loglevel/loglevel.go @@ -0,0 +1,37 @@ +// Package loglevel implements a basic level based logger +package loglevel + +import ( + "fmt" + "io" + "log/slog" + "os" + "path" +) + +type Logger struct { + fr *FileRotater +} + +func (l *Logger) Init(dir string) (*slog.Logger, error) { + err := os.MkdirAll(dir, 0o700) + if err != nil { + return nil, err + } + name := path.Join(dir, "log") + + fr, err := NewFileRotater(name) + if err != nil { + return nil, fmt.Errorf("failed creating log rotater: %w", err) + } + l.fr = fr + multi := io.MultiWriter(os.Stdout, fr) + handler := slog.NewTextHandler(multi, &slog.HandlerOptions{ + Level: slog.LevelDebug, + }) + return slog.New(handler), nil +} + +func (l *Logger) Close() error { + return l.fr.Close() +} |
