41 lines
832 B
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)
|
|
}
|
|
}
|