477518e5eb
API instrumentation - metrics and logging * api instrumentation prometheus metrics and logging for all routes * Merge branch 'main' of bitbucket.org:aarete/query-orchestration into feature/prometheus * add log_level and sync the config initialize * docs * cleanup * add to compose:up:test * docs for prometheus testing * custom metrics * cleanup * merge main * add tests * cleanup docs * cleanup * lint * fix unit tests (attempt) * fix tests * resolvesetlogger * expose 8080 * compose changes * bugfixesformichael * don't build _test * merge in main * job_sync_runner
49 lines
866 B
Go
49 lines
866 B
Go
package logger
|
|
|
|
import (
|
|
"log/slog"
|
|
"os"
|
|
)
|
|
|
|
type LogConfig struct {
|
|
Logger *slog.Logger
|
|
LogLevel string `env:"LOG_LEVEL" envDefault:"INFO"`
|
|
}
|
|
|
|
type ConfigProvider interface {
|
|
SetDefaultLogger()
|
|
GetLogLevel() slog.Leveler
|
|
GetLogger() *slog.Logger
|
|
PrintConfig(prefixSecret string)
|
|
}
|
|
|
|
func (b *LogConfig) GetLogger() *slog.Logger {
|
|
return b.Logger
|
|
}
|
|
|
|
func (b *LogConfig) GetLogLevel() slog.Leveler {
|
|
level := slog.LevelInfo
|
|
switch b.LogLevel {
|
|
case "DEBUG":
|
|
level = slog.LevelDebug
|
|
case "ERROR":
|
|
level = slog.LevelError
|
|
case "INFO":
|
|
level = slog.LevelInfo
|
|
case "WARN":
|
|
level = slog.LevelWarn
|
|
}
|
|
|
|
return level
|
|
}
|
|
|
|
func (b *LogConfig) SetDefaultLogger() {
|
|
b.Logger = slog.New(slog.NewTextHandler(os.Stdout, &slog.HandlerOptions{
|
|
Level: b.GetLogLevel(),
|
|
}))
|
|
|
|
slog.SetDefault(b.Logger)
|
|
|
|
slog.Info("Logger initialized", "level", b.LogLevel)
|
|
}
|