summaryrefslogtreecommitdiff
path: root/internal/loglevel/loglevel.go
diff options
context:
space:
mode:
authorJeroen Wijenbergh <jeroen.wijenbergh@geant.org>2026-02-12 12:34:08 +0100
committerJeroen Wijenbergh <jeroen.wijenbergh@geant.org>2026-02-12 12:59:03 +0100
commita30ef6b27e578a4cf0a674b24f5b52b4c1516c63 (patch)
tree27c7321cbceac2a487c1ba17151711de3d438a53 /internal/loglevel/loglevel.go
parentb00ce8214479c50e137db73c77b0cc1393c5e7d4 (diff)
All: Rename packages that sound useless or clash with std
Diffstat (limited to 'internal/loglevel/loglevel.go')
-rw-r--r--internal/loglevel/loglevel.go37
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()
+}