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