in pkg/berglas/logging/logging.go [60:90]
func New(w io.Writer, logLevel, logFormat string, debug bool) (*slog.Logger, error) {
opts := &slog.HandlerOptions{
ReplaceAttr: cloudLoggingAttrsEncoder(),
}
level, err := LookupLevel(logLevel)
if err != nil {
return nil, fmt.Errorf("invalid value %q for log level: %w", logLevel, err)
}
format, err := LookupFormat(logFormat)
if err != nil {
return nil, fmt.Errorf("invalid value %q for log format: %w", logFormat, err)
}
// Enable the most detailed log level and add source information in debug
// mode.
if debug {
opts.AddSource = true
level = math.MinInt
}
switch format {
case FormatJSON:
return slog.New(NewLevelHandler(level, slog.NewJSONHandler(w, opts))), nil
case FormatText:
return slog.New(NewLevelHandler(level, slog.NewTextHandler(w, opts))), nil
default:
return nil, fmt.Errorf("unknown log format %q", format)
}
}