update: trace

This commit is contained in:
loveuer 2024-07-17 21:31:51 +08:00
parent ec869aec2b
commit 116d5b13f8
5 changed files with 15 additions and 19 deletions

View File

@ -28,7 +28,7 @@ func Execute(ctx context.Context) error {
// tool.Must(nebula.Init(ctx, opt.Cfg.Nebula)) // tool.Must(nebula.Init(ctx, opt.Cfg.Nebula))
tool.Must(model.Init(db.New())) tool.Must(model.Init(db.New()))
tool.Must(controller.Init()) tool.Must(controller.Init(ctx))
tool.Must(api.Start(ctx)) tool.Must(api.Start(ctx))
<-ctx.Done() <-ctx.Done()

View File

@ -1,11 +1,13 @@
package controller package controller
import "context"
var ( var (
// UserController todo: 可以实现自己的 controller // UserController todo: 可以实现自己的 controller
UserController userController UserController userController
) )
func Init() error { func Init(ctx context.Context) error {
UserController = uc{} UserController = uc{}
return nil return nil

View File

@ -12,7 +12,7 @@ func _mix(c *nf.Ctx, msg string) string {
return msg return msg
} }
return fmt.Sprintf("%v | %s", c.Locals(opt.LocalShortTraceKey), msg) return fmt.Sprintf("%v | %s", c.Locals(opt.LocalTraceKey), msg)
} }
func Debug(c *nf.Ctx, msg string, data ...any) { func Debug(c *nf.Ctx, msg string, data ...any) {

View File

@ -8,7 +8,6 @@ import (
"github.com/loveuer/nf/nft/resp" "github.com/loveuer/nf/nft/resp"
"net/http" "net/http"
"strconv" "strconv"
"strings"
"time" "time"
"ultone/internal/opt" "ultone/internal/opt"
"ultone/internal/tool" "ultone/internal/tool"
@ -22,29 +21,25 @@ func New() nf.HandlerFunc {
return func(c *nf.Ctx) error { return func(c *nf.Ctx) error {
var ( var (
now = time.Now() now = time.Now()
trace = c.Get(Header) traceId = c.Get(Header)
logFn func(msg string, data ...any) logFn func(msg string, data ...any)
ip = c.IP() ip = c.IP()
) )
if trace == "" { if traceId == "" {
trace = uuid.Must(uuid.NewV7()).String() traceId = uuid.Must(uuid.NewV7()).String()
} }
c.SetHeader(Header, trace) c.SetHeader(Header, traceId)
traces := strings.Split(trace, "-") c.Locals(opt.LocalTraceKey, traceId)
shortTrace := traces[len(traces)-1]
c.Locals(opt.LocalTraceKey, trace)
c.Locals(opt.LocalShortTraceKey, shortTrace)
err := c.Next() err := c.Next()
status, _ := strconv.Atoi(c.Writer.Header().Get(resp.RealStatusHeader)) status, _ := strconv.Atoi(c.Writer.Header().Get(resp.RealStatusHeader))
duration := time.Since(now) duration := time.Since(now)
msg := fmt.Sprintf("%s | %15s | %d[%3d] | %s | %6s | %s", shortTrace, ip, c.StatusCode, status, tool.HumanDuration(duration.Nanoseconds()), c.Method(), c.Path()) msg := fmt.Sprintf("%s | %15s | %d[%3d] | %s | %6s | %s", traceId, ip, c.StatusCode, status, tool.HumanDuration(duration.Nanoseconds()), c.Method(), c.Path())
switch { switch {
case status >= 500: case status >= 500:

View File

@ -36,8 +36,7 @@ const (
// todo: 操作日志 最多延迟多少秒写入(最多缓存多少秒的日志,然后 bulk 写入) // todo: 操作日志 最多延迟多少秒写入(最多缓存多少秒的日志,然后 bulk 写入)
OpLogWriteDurationSecond = 5 OpLogWriteDurationSecond = 5
LocalTraceKey = "X-Trace" LocalTraceKey = "X-Trace"
LocalShortTraceKey = "X-Short-Trace"
) )
var ( var (