46 lines
742 B
Go
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))
|
|
}
|