Files
2026-05-17 18:56:39 +08:00

45 lines
839 B
Go

package core
import (
"os"
"strings"
"time"
"log/slog"
"github.com/lmittmann/tint"
"github.com/mattn/go-colorable"
)
func parseLevel(s string) slog.Level {
switch strings.ToLower(s) {
case "debug":
return slog.LevelDebug
case "warn", "warning":
return slog.LevelWarn
case "error":
return slog.LevelError
default:
return slog.LevelInfo
}
}
func NewLogger(level string, useJsonFormat bool) *slog.Logger {
w := os.Stdout
var logger *slog.Logger
if !useJsonFormat {
logger = slog.New(tint.NewHandler(colorable.NewColorable(w), &tint.Options{
Level: parseLevel(level),
TimeFormat: time.DateTime,
//NoColor: !isatty.IsTerminal(w.Fd()),
}))
} else {
logger = slog.New(slog.NewJSONHandler(w, &slog.HandlerOptions{
Level: parseLevel(level),
}))
}
slog.SetDefault(logger)
return logger
}