actions-runner-controller/logger/logger.go

41 lines
832 B
Go

package logger
import (
"fmt"
"log/slog"
"os"
"strings"
)
// New creates new slog.Logger based on the format
func New(logLevel string, logFormat string) (*slog.Logger, error) {
var lvl slog.Level
switch strings.ToLower(logLevel) {
case "debug":
lvl = slog.LevelDebug
case "info":
lvl = slog.LevelInfo
case "warn":
lvl = slog.LevelWarn
case "error":
lvl = slog.LevelError
default:
return nil, fmt.Errorf("invalid log level: %s", logLevel)
}
switch logFormat {
case "json":
return slog.New(slog.NewJSONHandler(os.Stdout, &slog.HandlerOptions{
AddSource: true,
Level: lvl,
})), nil
case "text":
return slog.New(slog.NewTextHandler(os.Stdout, &slog.HandlerOptions{
AddSource: true,
Level: lvl,
})), nil
default:
return nil, fmt.Errorf("invalid log format: %s", logFormat)
}
}