buildr/internal/logging/setup.go
Peter e60726ef9e
All checks were successful
continuous-integration/drone/pr Build is passing
continuous-integration/drone/push Build is passing
feat: implement new and man for plugin modules
- use extracted shared libraries
2023-08-23 22:06:26 +02:00

46 lines
742 B
Go

package logging
import (
"flag"
"log/slog"
"os"
)
func NewConfig() Config {
return Config{
LogLevel: new(slog.LevelVar),
}
}
type Config struct {
LogLevel *slog.LevelVar
AddSource bool
}
func (c *Config) Flags() *flag.FlagSet {
flagSet := flag.NewFlagSet("logging", flag.PanicOnError)
flagSet.TextVar(
c.LogLevel,
"log.level",
c.LogLevel,
"set log level",
)
flagSet.BoolVar(
&c.AddSource,
"log.add-source",
false,
"Enable to get detailed information where the log was produced",
)
return flagSet
}
func (c *Config) Logger() *slog.Logger {
slogOptions := slog.HandlerOptions{
AddSource: c.AddSource,
Level: c.LogLevel.Level(),
}
return slog.New(slog.NewTextHandler(os.Stderr, &slogOptions))
}