Files
query-orchestration/internal/serviceconfig/logger/config.go
T
Jay Brown 477518e5eb Merged in feature/prometheus (pull request #52)
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
2025-02-13 15:44:08 +00:00

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)
}