package logging import ( "context" "github.com/google/uuid" ) // WorkerContext creates a context with trace and request IDs for background work. // Workers and cron jobs don't receive HTTP requests, so they need to generate // their own correlation IDs for log tracing. // // Usage: // // func (w *Worker) ProcessJob(ctx context.Context, job Job) error { // ctx = logging.WorkerContext(ctx, "order-processor") // logger := logging.FromContext(ctx) // logger.Info("processing job", "job_id", job.ID) // // ... all downstream logs include trace_id and request_id // } func WorkerContext(ctx context.Context, component string) context.Context { traceID := uuid.New().String() requestID := uuid.New().String() ctx = WithTraceID(ctx, traceID) ctx = WithRequestID(ctx, requestID) // If there's a logger in context, enrich it logger := FromContext(ctx) enriched := logger.With( "trace_id", traceID, "request_id", requestID, "component", component, ) return NewContext(ctx, enriched) }