| package tracing
|
|
|
| import (
|
| "context"
|
|
|
| "github.com/looplj/axonhub/internal/log"
|
| )
|
|
|
| func SetupLogger(logger *log.Logger) {
|
| logger.AddHook(log.HookFunc(TraceFieldsHooks))
|
| }
|
|
|
|
|
| func TraceFieldsHooks(ctx context.Context, msg string, fields ...log.Field) []log.Field {
|
| if ctx == nil {
|
| return fields
|
| }
|
|
|
|
|
| if traceID, ok := GetTraceID(ctx); ok {
|
|
|
| fields = append(fields, log.String("trace_id", traceID))
|
| }
|
|
|
|
|
| if requestID, ok := GetRequestID(ctx); ok {
|
|
|
| fields = append(fields, log.String("request_id", requestID))
|
| }
|
|
|
| if operationName, ok := GetOperationName(ctx); ok {
|
| fields = append(fields, log.String("operation_name", operationName))
|
| }
|
|
|
| return fields
|
| }
|
|
|