jinnrry 2 лет назад
Родитель
Сommit
331616e186
3 измененных файлов с 27 добавлено и 1 удалено
  1. 1 1
      server/go.mod
  2. 2 0
      server/go.sum
  3. 24 0
      server/main.go

+ 1 - 1
server/go.mod

@@ -23,7 +23,7 @@ require (
 replace github.com/alexedwards/scs/sqlite3store v0.0.0-20230327161757-10d4299e3b24 => github.com/Jinnrry/scs/sqlite3store v0.0.0-20230803080525-914f01e0d379
 
 require (
-	github.com/Jinnrry/gopop v0.0.0-20231109113124-29947e68ddf7 // indirect
+	github.com/Jinnrry/gopop v0.0.0-20231110034408-2df37b20353b // indirect
 	github.com/cenkalti/backoff/v4 v4.2.1 // indirect
 	github.com/dustin/go-humanize v1.0.1 // indirect
 	github.com/emersion/go-sasl v0.0.0-20200509203442-7bfe0ed36a21 // indirect

+ 2 - 0
server/go.sum

@@ -8,6 +8,8 @@ github.com/Jinnrry/gopop v0.0.0-20231109111809-633359de6de1 h1:K2qHwBniOX3Tcl1Fp
 github.com/Jinnrry/gopop v0.0.0-20231109111809-633359de6de1/go.mod h1:xcI6e+jbXWN+T8EWOJtHbAku6pzNqyCHaFvzdeL1r2o=
 github.com/Jinnrry/gopop v0.0.0-20231109113124-29947e68ddf7 h1:GFm3jyFtb+AsVodnQ4cE80J3d05EpnpxxZkFiiAJqJ4=
 github.com/Jinnrry/gopop v0.0.0-20231109113124-29947e68ddf7/go.mod h1:xcI6e+jbXWN+T8EWOJtHbAku6pzNqyCHaFvzdeL1r2o=
+github.com/Jinnrry/gopop v0.0.0-20231110034408-2df37b20353b h1:BnmGVd+PPIfbbuLr0FaRhMGyG24YYdOvr4MjiFaA5VM=
+github.com/Jinnrry/gopop v0.0.0-20231110034408-2df37b20353b/go.mod h1:xcI6e+jbXWN+T8EWOJtHbAku6pzNqyCHaFvzdeL1r2o=
 github.com/Jinnrry/scs/sqlite3store v0.0.0-20230803080525-914f01e0d379 h1:i6LB/3lgkRDupe3owyNXtH8dtQrdaReCLeAZKrWcqAE=
 github.com/Jinnrry/scs/sqlite3store v0.0.0-20230803080525-914f01e0d379/go.mod h1:Iyk7S76cxGaiEX/mSYmTZzYehp4KfyylcLaV3OnToss=
 github.com/alexedwards/scs/mysqlstore v0.0.0-20230327161757-10d4299e3b24 h1:1jXpX7IE/zuf9FZQJpqZNepXqW8mq6NLzplHDCA43HY=

+ 24 - 0
server/main.go

@@ -2,8 +2,10 @@ package main
 
 import (
 	"bytes"
+	oc "context"
 	"fmt"
 	log "github.com/sirupsen/logrus"
+	"log/slog"
 	"os"
 	"pmail/config"
 	"pmail/cron_server"
@@ -40,6 +42,25 @@ var (
 	goVersion string
 )
 
+type logHandler struct {
+	slog.Handler
+	logLevel slog.Level
+}
+
+func newSLogger(level slog.Level) *slog.Logger {
+	handler := &logHandler{
+		// handler 使用 slog 默认的 Handler
+		slog.Default().Handler(),
+		level,
+	}
+
+	return slog.New(handler)
+}
+
+func (dh *logHandler) Enabled(ctx oc.Context, l slog.Level) bool {
+	return l >= dh.logLevel
+}
+
 func main() {
 	// 设置日志格式为json格式
 	log.SetFormatter(&logFormatter{})
@@ -59,12 +80,15 @@ func main() {
 		case "":
 			log.SetLevel(log.InfoLevel)
 		case "debug":
+			slog.SetDefault(newSLogger(slog.LevelDebug))
 			log.SetLevel(log.DebugLevel)
 		case "info":
 			log.SetLevel(log.InfoLevel)
 		case "warn":
+			slog.SetDefault(newSLogger(slog.LevelWarn))
 			log.SetLevel(log.WarnLevel)
 		case "error":
+			slog.SetDefault(newSLogger(slog.LevelError))
 			log.SetLevel(log.ErrorLevel)
 		default:
 			log.SetLevel(log.InfoLevel)