master
lr 2 months ago
parent 1e31ed594c
commit 3aa223a279

@ -1,3 +1,3 @@
app:
mode: "debug" # release, debug, test
mode: "release" # release, debug, test
addr: ":8084"

@ -0,0 +1 @@
{"time":"2024-07-27T11:45:15.5704377+08:00","level":"INFO","msg":"server is listening on ","addr":":8084"}

@ -9,8 +9,12 @@ import (
func main() {
//解析配置
utils.ParseConfig()
//设置模式
utils.SetMode()
//设置日志
utils.SetLogger()
//初始化路由引擎
r := handelers.InitEngine()
utils.Logger().Info("server is listening on ", "addr", viper.GetString("app.addr"))
r.Run(viper.GetString("app.addr")) // 监听并在 0.0.0.0:8080 上启动服务
}

@ -0,0 +1,57 @@
package utils
import (
"github.com/gin-gonic/gin"
"io"
"log"
"log/slog"
"os"
)
// logger
var logger *slog.Logger
func Logger() *slog.Logger {
return logger
}
// 公共的writer变量
var logWriter io.Writer
func LogWriter() io.Writer {
return logWriter
}
// 设置writer
func setLoggerWriter() {
// 根据不同的mode选择不同的writer
switch gin.Mode() {
case gin.ReleaseMode:
// 打开文件
logfile := "./logs/app.log"
if file, err := os.OpenFile(logfile, os.O_CREATE|os.O_APPEND|os.O_WRONLY, 0666); err != nil {
log.Println(err)
return
} else {
logWriter = file
}
case gin.TestMode, gin.DebugMode:
fallthrough
default:
logWriter = os.Stdout
}
}
// SetLogger 设置日志
func SetLogger() {
// 1. 设置集中的日志Writer
setLoggerWriter()
// 2. 初始化日志
initLogger()
}
// 初始化日志
func initLogger() {
//使用json模式记录
logger = slog.New(slog.NewJSONHandler(logWriter, &slog.HandlerOptions{}))
}
Loading…
Cancel
Save