/*
* Copyright (C) 2024 Jonni Liljamo <jonni@liljamo.com>
*
* This file is licensed under AGPL-3.0-or-later, see NOTICE and LICENSE for
* more information.
*/
// Package log implements logging utilities.
package log
import (
"log/slog"
"os"
"path/filepath"
)
// InitDefaultLogger initializes the default logger.
func InitDefaultLogger(logLevel string) {
var feluLogLevel = new(slog.LevelVar)
switch logLevel {
case "debug":
feluLogLevel.Set(slog.LevelDebug)
case "info":
feluLogLevel.Set(slog.LevelInfo)
case "warning":
feluLogLevel.Set(slog.LevelWarn)
case "error":
feluLogLevel.Set(slog.LevelError)
}
replace := func(groups []string, a slog.Attr) slog.Attr {
if a.Key == slog.SourceKey {
source := a.Value.Any().(*slog.Source)
source.File = filepath.Base(source.File)
}
return a
}
logger := slog.New(slog.NewTextHandler(os.Stdout, &slog.HandlerOptions{
Level: feluLogLevel,
AddSource: true,
ReplaceAttr: replace,
}))
slog.SetDefault(logger)
}