From 30ef26fce84d6a7255c8960f0eefdeafecfe8349 Mon Sep 17 00:00:00 2001 From: xh <11675084@qq.com> Date: Sat, 17 Jan 2026 02:54:16 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96=E5=AE=9A=E6=97=B6=E4=BB=BB?= =?UTF-8?q?=E5=8A=A1=EF=BC=8C=E6=97=A5=E5=BF=97=E8=BE=93=E5=87=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- admin/src/views/system/menu/edit.vue | 6 +++- server/.gitignore | 3 +- server/app/corn/corn.go | 4 +-- server/config/app.go | 2 +- server/config/init.go | 12 ++++---- server/core/logger.go | 43 ++++++++++++++++++++++------ server/go.mod | 1 + server/go.sum | 2 ++ server/logs/like_admin.log | 33 +++++++++++++++++++++ server/middleware/log.go | 6 ++-- 10 files changed, 90 insertions(+), 22 deletions(-) create mode 100644 server/logs/like_admin.log diff --git a/admin/src/views/system/menu/edit.vue b/admin/src/views/system/menu/edit.vue index 4987964..bab2909 100644 --- a/admin/src/views/system/menu/edit.vue +++ b/admin/src/views/system/menu/edit.vue @@ -320,7 +320,11 @@ const handleSubmit = async () => { // data.perms = '' // } - mode.value == 'edit' ? await menuEdit(data) : await menuAdd(data) + if (mode.value == 'edit') { + await menuEdit(data) + } else { + await menuAdd(data) + } popupRef.value?.close() feedback.msgSuccess('操作成功') emit('success') diff --git a/server/.gitignore b/server/.gitignore index 0c93270..6472926 100644 --- a/server/.gitignore +++ b/server/.gitignore @@ -60,4 +60,5 @@ main # air tmp dist/ -uploads/ \ No newline at end of file +uploads/ +./logs \ No newline at end of file diff --git a/server/app/corn/corn.go b/server/app/corn/corn.go index fe6864c..750f9a2 100644 --- a/server/app/corn/corn.go +++ b/server/app/corn/corn.go @@ -73,11 +73,11 @@ func (tm *CronManager) AddTask(taskID, CronExpr string, task cornService.Task) e lock := util.NewRedisLock(lockKey, task.LockTTL) // 锁自动过期 10s if !lock.Lock() { - core.Logger.Info("任务加锁失败:%s: %s", task.TaskCode, task.TaskDesc) + core.Logger.Infof("任务加锁失败:%s: %s", task.TaskCode, task.TaskDesc) return } defer func() { - core.Logger.Info("任务解锁:%s: %s", task.TaskCode, task.TaskDesc) + core.Logger.Infof("任务解锁:%s: %s", task.TaskCode, task.TaskDesc) // 解锁失败时,记录日志 if err := lock.Unlock(); err != nil { core.Logger.Error("任务解锁失败:%s: %s, err: %v", task.TaskCode, task.TaskDesc, err) diff --git a/server/config/app.go b/server/config/app.go index e40a198..872b83d 100644 --- a/server/config/app.go +++ b/server/config/app.go @@ -14,7 +14,7 @@ var AppConfig = appConfig{ AppName: "x_admin", Version: "0.0.0", Port: 8080, - GinMode: "", + GinMode: "release", OssDomain: "", DisallowModify: false, } diff --git a/server/config/init.go b/server/config/init.go index 0f94d5f..59edb37 100644 --- a/server/config/init.go +++ b/server/config/init.go @@ -50,10 +50,10 @@ func loadConfig(config config) config { } func init() { - fmt.Println("AppConfig:", AppConfig) - fmt.Println("DBConfig:", DBConfig) - fmt.Println("RedisConfig:", RedisConfig) - fmt.Println("FileConfig:", FileConfig) - fmt.Println("GeTuiConfig:", GeTuiConfig) - fmt.Println("EmailConfig:", EmailConfig) + fmt.Printf("AppConfig: %+v\n", AppConfig) + fmt.Printf("DBConfig: %+v\n", DBConfig) + fmt.Printf("RedisConfig: %+v\n", RedisConfig) + fmt.Printf("FileConfig: %+v\n", FileConfig) + fmt.Printf("GeTuiConfig: %+v\n", GeTuiConfig) + fmt.Printf("EmailConfig: %+v\n", EmailConfig) } diff --git a/server/core/logger.go b/server/core/logger.go index ad9c529..0f8dc85 100644 --- a/server/core/logger.go +++ b/server/core/logger.go @@ -1,22 +1,49 @@ package core import ( - "os" + "x_admin/config" "go.uber.org/zap" "go.uber.org/zap/zapcore" + "gopkg.in/natefinch/lumberjack.v2" ) var Logger = initLogger() -// initLogger 初始化zap日志 func initLogger() *zap.SugaredLogger { - zap.NewDevelopmentConfig() - cfg := zap.NewProductionEncoderConfig() - cfg.EncodeTime = zapcore.ISO8601TimeEncoder - cfg.EncodeLevel = zapcore.CapitalLevelEncoder - cfg.FunctionKey = "F" - core := zapcore.NewCore(zapcore.NewConsoleEncoder(cfg), zapcore.AddSync(os.Stderr), zapcore.InfoLevel) + writeSyncer := getLogWriter() + var encoder zapcore.Encoder + if config.AppConfig.GinMode == "debug" { + encoder = getDevEncoder() + } else { + encoder = getProductionEncoder() + } + core := zapcore.NewCore(encoder, writeSyncer, zapcore.DebugLevel) + logger := zap.New(core, zap.AddCaller()) + return logger.Sugar() } +func getDevEncoder() zapcore.Encoder { + encoderConfig := zap.NewDevelopmentEncoderConfig() + encoderConfig.EncodeTime = zapcore.ISO8601TimeEncoder + encoderConfig.EncodeLevel = zapcore.CapitalLevelEncoder + return zapcore.NewConsoleEncoder(encoderConfig) +} + +func getProductionEncoder() zapcore.Encoder { + encoderConfig := zap.NewProductionEncoderConfig() + encoderConfig.EncodeTime = zapcore.ISO8601TimeEncoder + encoderConfig.EncodeLevel = zapcore.CapitalLevelEncoder + return zapcore.NewConsoleEncoder(encoderConfig) +} +func getLogWriter() zapcore.WriteSyncer { + lumberJackLogger := &lumberjack.Logger{ + Filename: "./logs/like_admin.log", + MaxSize: 10, + MaxBackups: 5, + MaxAge: 30, + Compress: false, + } + return zapcore.AddSync(lumberJackLogger) +} diff --git a/server/go.mod b/server/go.mod index ac76cc1..f319b2d 100644 --- a/server/go.mod +++ b/server/go.mod @@ -103,5 +103,6 @@ require ( golang.org/x/sys v0.39.0 // indirect golang.org/x/tools v0.39.0 // indirect google.golang.org/protobuf v1.36.10 // indirect + gopkg.in/natefinch/lumberjack.v2 v2.2.1 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect ) diff --git a/server/go.sum b/server/go.sum index 0b26ba6..d23972c 100644 --- a/server/go.sum +++ b/server/go.sum @@ -238,6 +238,8 @@ google.golang.org/protobuf v1.36.10/go.mod h1:HTf+CrKn2C3g5S8VImy6tdcUvCska2kB7j gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk= gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q= +gopkg.in/natefinch/lumberjack.v2 v2.2.1 h1:bBRl1b0OH9s/DuPhuXpNl+VtCaJXFZ5/uEFST95x9zc= +gopkg.in/natefinch/lumberjack.v2 v2.2.1/go.mod h1:YD8tP3GAjkrDg1eZH7EGmyESg/lsYskCTPBJVb9jqSc= gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= diff --git a/server/logs/like_admin.log b/server/logs/like_admin.log new file mode 100644 index 0000000..851879e --- /dev/null +++ b/server/logs/like_admin.log @@ -0,0 +1,33 @@ +2026-01-17T02:50:15.008+0800 INFO corn/corn.go:80 任务解锁:onlineCount: 广播当前在线用户数 +2026-01-17T02:50:20.001+0800 INFO corn/corn.go:80 任务解锁:onlineCount: 广播当前在线用户数 +2026-01-17T02:50:20.005+0800 INFO corn/init.go:74 拉取到的任务数量: 1 +2026-01-17T02:50:25.000+0800 INFO cornService/task.go:38 执行示例任务: exampleTask +2026-01-17T02:50:25.002+0800 INFO corn/corn.go:80 任务解锁:onlineCount: 广播当前在线用户数 +2026-01-17T02:50:30.001+0800 INFO corn/corn.go:80 任务解锁:onlineCount: 广播当前在线用户数 +2026-01-17T02:50:30.002+0800 INFO corn/init.go:74 拉取到的任务数量: 1 +2026-01-17T02:50:30.152+0800 INFO corn/corn.go:76 任务加锁失败:exampleTask: 这是一个示例任务,每分钟执行一次 +2026-01-17T02:50:32.000+0800 INFO corn/corn.go:80 任务解锁:exampleTask: 这是一个示例任务,每分钟执行一次 +2026-01-17T02:50:35.003+0800 INFO corn/corn.go:80 任务解锁:onlineCount: 广播当前在线用户数 +2026-01-17T02:50:35.039+0800 INFO cornService/task.go:38 执行示例任务: exampleTask +2026-01-17T02:50:40.001+0800 INFO corn/corn.go:80 任务解锁:onlineCount: 广播当前在线用户数 +2026-01-17T02:50:40.001+0800 INFO corn/init.go:74 拉取到的任务数量: 1 +2026-01-17T02:50:40.152+0800 INFO corn/corn.go:76 任务加锁失败:exampleTask: 这是一个示例任务,每分钟执行一次 +2026-01-17T02:50:42.039+0800 INFO corn/corn.go:80 任务解锁:exampleTask: 这是一个示例任务,每分钟执行一次 +2026-01-17T02:50:45.001+0800 INFO corn/corn.go:80 任务解锁:onlineCount: 广播当前在线用户数 +2026-01-17T02:50:45.001+0800 INFO cornService/task.go:38 执行示例任务: exampleTask +2026-01-17T02:50:50.000+0800 INFO corn/corn.go:80 任务解锁:onlineCount: 广播当前在线用户数 +2026-01-17T02:50:50.001+0800 INFO corn/init.go:74 拉取到的任务数量: 1 +2026-01-17T02:50:50.153+0800 INFO corn/corn.go:76 任务加锁失败:exampleTask: 这是一个示例任务,每分钟执行一次 +2026-01-17T02:50:52.002+0800 INFO corn/corn.go:80 任务解锁:exampleTask: 这是一个示例任务,每分钟执行一次 +2026-01-17T02:50:55.000+0800 INFO cornService/task.go:38 执行示例任务: exampleTask +2026-01-17T02:50:55.002+0800 INFO corn/corn.go:80 任务解锁:onlineCount: 广播当前在线用户数 +2026-01-17T02:51:00.000+0800 INFO corn/corn.go:80 任务解锁:onlineCount: 广播当前在线用户数 +2026-01-17T02:51:00.001+0800 INFO corn/init.go:74 拉取到的任务数量: 1 +2026-01-17T02:51:00.152+0800 INFO corn/corn.go:76 任务加锁失败:exampleTask: 这是一个示例任务,每分钟执行一次 +2026-01-17T02:51:02.001+0800 INFO corn/corn.go:80 任务解锁:exampleTask: 这是一个示例任务,每分钟执行一次 +2026-01-17T02:51:05.001+0800 INFO corn/corn.go:80 任务解锁:onlineCount: 广播当前在线用户数 +2026-01-17T02:51:05.001+0800 INFO cornService/task.go:38 执行示例任务: exampleTask +2026-01-17T02:51:10.001+0800 INFO corn/corn.go:80 任务解锁:onlineCount: 广播当前在线用户数 +2026-01-17T02:51:10.002+0800 INFO corn/init.go:74 拉取到的任务数量: 1 +2026-01-17T02:51:10.161+0800 INFO corn/corn.go:76 任务加锁失败:exampleTask: 这是一个示例任务,每分钟执行一次 +2026-01-17T02:51:12.002+0800 INFO corn/corn.go:80 任务解锁:exampleTask: 这是一个示例任务,每分钟执行一次 diff --git a/server/middleware/log.go b/server/middleware/log.go index 36f97f3..eea8ec4 100644 --- a/server/middleware/log.go +++ b/server/middleware/log.go @@ -109,9 +109,9 @@ func RecordLog(title string, reqTypes ...requestType) gin.HandlerFunc { }() // 执行方法 c.Next() - if config.AppConfig.GinMode == "debug" { - return - } + // if config.AppConfig.GinMode == "debug" { + // return + // } if len(c.Errors) > 0 { errStr = c.Errors.String() status = 2