diff --git a/code/base-project/base-go/.idea/base-farmework.iml b/code/base-project/base-go/.idea/base-go.iml similarity index 100% rename from code/base-project/base-go/.idea/base-farmework.iml rename to code/base-project/base-go/.idea/base-go.iml diff --git a/code/base-project/base-go/.idea/modules.xml b/code/base-project/base-go/.idea/modules.xml index 76f5c7d8..3fa67754 100644 --- a/code/base-project/base-go/.idea/modules.xml +++ b/code/base-project/base-go/.idea/modules.xml @@ -2,7 +2,7 @@ - + \ No newline at end of file diff --git a/code/base-project/base-go/pkg/middleware/logger.go b/code/base-project/base-go/pkg/middleware/logger.go index ac703de9..2f74ae3b 100644 --- a/code/base-project/base-go/pkg/middleware/logger.go +++ b/code/base-project/base-go/pkg/middleware/logger.go @@ -5,12 +5,35 @@ import ( "base-framework/pkg/router" "base-framework/pkg/routinex" "base-framework/pkg/utils/uid" + "time" ) +// TrackTime 记录开始时间到现在时间的耗时 +func TrackTime(pre time.Time) time.Duration { + elapsed := time.Since(pre) + + return elapsed +} + func Logger() router.HandlerFunc { return func(c *router.Context) { - routinex.Set(logx.TrackID, uid.NextID()) + start := time.Now() // 记录开始时间 - c.Next() + // 生成 trackID 并存入 routinex + trackID := uid.NextID() + routinex.Set(logx.TrackID, trackID) + + c.Next() // 执行业务逻辑 + + // 请求结束后计算耗时 + elapsed := TrackTime(start) + + logx.Logger.Info("请求结束", + logx.String("logType", "request"), + logx.Uint64("trackID", trackID), + logx.String("path", c.Request.URL.Path), + logx.String("method", c.Request.Method), + logx.Duration("elapsed", elapsed), + ) } } diff --git a/code/base-project/base-go/pkg/routinex/routinex.go b/code/base-project/base-go/pkg/routinex/routinex.go index b687b03c..6793a035 100644 --- a/code/base-project/base-go/pkg/routinex/routinex.go +++ b/code/base-project/base-go/pkg/routinex/routinex.go @@ -1,3 +1,7 @@ +/** +保证多routine共用同一数据 +*/ + package routinex import ( @@ -7,7 +11,7 @@ import ( "sync" ) -// ------------------- goroutine id ------------------- +// CurGID 获取 routine 的id func CurGID() uint64 { var buf [64]byte n := runtime.Stack(buf[:], false) @@ -25,6 +29,7 @@ var ( instanceOnce sync.Once ) +// GetInstance 获取当前示例 func GetInstance() *RoutineLocal { instanceOnce.Do(func() { instance = &RoutineLocal{} @@ -57,7 +62,7 @@ func Clear() { GetInstance().data.Delete(CurGID()) } -// Go 封装函数,自动继承父 goroutine 数据 +// Go 自动继承父 goroutine 数据,多 routine 的时候需要使用 func Go(f func()) { parentGID := CurGID() parentData, _ := GetInstance().data.Load(parentGID) diff --git a/code/base-project/base-vue/test.html b/code/base-project/base-vue/test.html index f85ee93a..904443c2 100644 --- a/code/base-project/base-vue/test.html +++ b/code/base-project/base-vue/test.html @@ -1,103 +1,109 @@ - + - - - Material ui 水波纹效果 - - - + + + 后台按钮渐深点击升级版 + - -
- +
+ + +
- - + }) + + diff --git a/code/go-project/base-farmework/.idea/vcs.xml b/code/go-project/base-farmework/.idea/vcs.xml new file mode 100644 index 00000000..c2365ab1 --- /dev/null +++ b/code/go-project/base-farmework/.idea/vcs.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/code/go-project/base-farmework/.idea/workspace.xml b/code/go-project/base-farmework/.idea/workspace.xml index 53b3ab30..65206bbd 100644 --- a/code/go-project/base-farmework/.idea/workspace.xml +++ b/code/go-project/base-farmework/.idea/workspace.xml @@ -4,7 +4,9 @@