Skip to content

Commit

Permalink
slowlog
Browse files Browse the repository at this point in the history
  • Loading branch information
askuy committed Jun 26, 2024
1 parent 3714036 commit 42d84f3
Show file tree
Hide file tree
Showing 2 changed files with 18 additions and 12 deletions.
2 changes: 1 addition & 1 deletion config.go
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,7 @@ type config struct {
SlowLogThreshold time.Duration // SlowLogThreshold 慢日志门限值,超过该门限值的请求,将被记录到慢日志中
OnFail string // OnFail panic|error
EnableMetricInterceptor bool // EnableMetricInterceptor 是否开启监控,默认开启
EnableTraceInterceptor bool // EnableTraceInterceptor 是否开启链路,默认开启
EnableTraceInterceptor bool // EnableTraceInterceptor 是否开启链路,默认
EnableAccessInterceptor bool // EnableAccessInterceptor 是否开启,记录请求数据
EnableAccessInterceptorReq bool // EnableAccessInterceptorReq 是否开启记录请求参数
EnableAccessInterceptorRes bool // EnableAccessInterceptorRes 是否开启记录响应参数
Expand Down
28 changes: 17 additions & 11 deletions interceptor.go
Original file line number Diff line number Diff line change
Expand Up @@ -155,11 +155,11 @@ func metricInterceptor(compName string, config *config, logger *elog.Component)
func accessInterceptor(compName string, config *config, logger *elog.Component) *interceptor {
return newInterceptor(compName, config, logger).setAfterProcess(
func(ctx context.Context, cmd redis.Cmder) error {
loggerKeys := transport.CustomContextKeys()
var fields = make([]elog.Field, 0, 15+len(loggerKeys))
var fields = make([]elog.Field, 0, 15+transport.CustomContextKeysLength())
var err = cmd.Err()
cost := time.Since(ctx.Value(ctxBegKey).(time.Time))
fields = append(fields, elog.FieldComponentName(compName),
fields = append(fields,
elog.FieldComponentName(compName),
elog.FieldMethod(cmd.Name()),
elog.FieldCost(cost))

Expand All @@ -171,24 +171,26 @@ func accessInterceptor(compName string, config *config, logger *elog.Component)
}

// 开启了链路,那么就记录链路id
if config.EnableTraceInterceptor && etrace.IsGlobalTracerRegistered() {
if etrace.IsGlobalTracerRegistered() {
fields = append(fields, elog.FieldTid(etrace.ExtractTraceID(ctx)))
}

// 支持自定义log
for _, key := range loggerKeys {
for _, key := range transport.CustomContextKeys() {
if value := getContextValue(ctx, key); value != "" {
fields = append(fields, elog.FieldCustomKeyValue(key, value))
}
}

event := "normal"
isSlowLog := false
if config.SlowLogThreshold > time.Duration(0) && cost > config.SlowLogThreshold {
logger.Warn("slow", fields...)
isSlowLog = true
event = "slow"
}

// error metric
if err != nil {
fields = append(fields, elog.FieldEvent("error"), elog.FieldErr(err))
fields = append(fields, elog.FieldEvent(event), elog.FieldErr(err))
if errors.Is(err, redis.Nil) {
logger.Warn("access", fields...)
return err
Expand All @@ -197,9 +199,13 @@ func accessInterceptor(compName string, config *config, logger *elog.Component)
return err
}

if config.EnableAccessInterceptor {
fields = append(fields, elog.FieldEvent("normal"))
logger.Info("access", fields...)
if config.EnableAccessInterceptor || isSlowLog {
fields = append(fields, elog.FieldEvent(event))
if isSlowLog {
logger.Warn("access", fields...)
} else {
logger.Info("access", fields...)
}
}
return err
},
Expand Down

0 comments on commit 42d84f3

Please sign in to comment.