2025-03-05 14:14:11 +08:00
|
|
|
package log
|
|
|
|
|
|
|
|
|
|
import (
|
|
|
|
|
"log/slog"
|
|
|
|
|
"os"
|
2025-05-16 17:04:03 +08:00
|
|
|
"proxy-server/gateway/env"
|
2025-03-05 14:14:11 +08:00
|
|
|
"time"
|
|
|
|
|
|
|
|
|
|
"github.com/lmittmann/tint"
|
|
|
|
|
"github.com/mattn/go-colorable"
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
func Init() {
|
2025-05-14 15:13:44 +08:00
|
|
|
var mode = env.AppLogMode
|
|
|
|
|
var level = slog.LevelDebug
|
|
|
|
|
if mode == "test" {
|
|
|
|
|
level = slog.LevelInfo
|
2025-03-05 14:14:11 +08:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
switch mode {
|
|
|
|
|
case "dev":
|
|
|
|
|
writer := colorable.NewColorable(os.Stdout)
|
|
|
|
|
logger := slog.New(tint.NewHandler(writer, &tint.Options{
|
2025-03-07 15:50:57 +08:00
|
|
|
Level: level,
|
2025-03-05 14:14:11 +08:00
|
|
|
TimeFormat: time.RFC3339,
|
|
|
|
|
ReplaceAttr: func(_ []string, attr slog.Attr) slog.Attr {
|
|
|
|
|
err, ok := attr.Value.Any().(error)
|
|
|
|
|
if ok {
|
|
|
|
|
return tint.Err(err)
|
|
|
|
|
}
|
|
|
|
|
return attr
|
|
|
|
|
},
|
|
|
|
|
}))
|
|
|
|
|
slog.SetDefault(logger)
|
|
|
|
|
case "test":
|
|
|
|
|
logger := slog.New(slog.NewJSONHandler(os.Stdout, &slog.HandlerOptions{
|
2025-03-07 15:50:57 +08:00
|
|
|
Level: level,
|
2025-03-05 14:14:11 +08:00
|
|
|
}))
|
|
|
|
|
slog.SetDefault(logger)
|
|
|
|
|
default:
|
|
|
|
|
panic("日志模式错误")
|
|
|
|
|
}
|
|
|
|
|
}
|