/* * Copyright (C) 2024 Jonni Liljamo * * 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) }