技术栈:Go (Gin + GORM) + PHP + MySQL 5.7 + Redis 主要功能: - 多班级完全隔离(class_id 贯穿全系统) - 后端从 Python FastAPI 重写为 Go Gin(端口 56789) - 超级管理员独立登录(env 配置路径,默认账密 admin/Admin123) - 科任老师/课代表新角色 - 课代表作业管理页面 - 排行榜分项排行(操行分/考勤/作业) - 角色加减分上下限由班主任配置 - 家长改密功能(可开关) - 班级角色按需开关 - 宿舍号格式:南0-000 - 周度/月度重置功能 - MySQL 5.7 兼容 - Nginx 反向代理部署 开发者: Canglan 版权归属: Sea Network Technology Studio 许可证: Apache License 2.0
65 lines
1.3 KiB
Go
65 lines
1.3 KiB
Go
package logger
|
||
|
||
import (
|
||
"os"
|
||
|
||
"go.uber.org/zap"
|
||
"go.uber.org/zap/zapcore"
|
||
)
|
||
|
||
// Log 全局日志实例
|
||
var Log *zap.Logger
|
||
|
||
// Sugared 全局 SugaredLogger(便捷方法)
|
||
var Sugared *zap.SugaredLogger
|
||
|
||
// Init 初始化日志
|
||
func Init(level string, isProduction bool) {
|
||
var zapLevel zapcore.Level
|
||
switch level {
|
||
case "debug":
|
||
zapLevel = zapcore.DebugLevel
|
||
case "info":
|
||
zapLevel = zapcore.InfoLevel
|
||
case "warn":
|
||
zapLevel = zapcore.WarnLevel
|
||
case "error":
|
||
zapLevel = zapcore.ErrorLevel
|
||
default:
|
||
zapLevel = zapcore.InfoLevel
|
||
}
|
||
|
||
encoderCfg := zap.NewProductionEncoderConfig()
|
||
encoderCfg.TimeKey = "time"
|
||
encoderCfg.EncodeTime = zapcore.ISO8601TimeEncoder
|
||
encoderCfg.EncodeLevel = zapcore.CapitalLevelEncoder
|
||
|
||
var core zapcore.Core
|
||
if isProduction {
|
||
// 生产环境:JSON 格式输出到 stdout
|
||
core = zapcore.NewCore(
|
||
zapcore.NewJSONEncoder(encoderCfg),
|
||
zapcore.Lock(os.Stdout),
|
||
zapLevel,
|
||
)
|
||
} else {
|
||
// 开发环境:Console 格式输出
|
||
encoderCfg.EncodeLevel = zapcore.CapitalColorLevelEncoder
|
||
core = zapcore.NewCore(
|
||
zapcore.NewConsoleEncoder(encoderCfg),
|
||
zapcore.Lock(os.Stdout),
|
||
zapLevel,
|
||
)
|
||
}
|
||
|
||
Log = zap.New(core, zap.AddCaller(), zap.AddStacktrace(zapcore.ErrorLevel))
|
||
Sugared = Log.Sugar()
|
||
}
|
||
|
||
// Sync 刷新日志缓冲区
|
||
func Sync() {
|
||
if Log != nil {
|
||
_ = Log.Sync()
|
||
}
|
||
}
|