Trace + Log Correlation
#[instrument(
skip(state, payload),
fields(
task_id = tracing::field::Empty,
task_type = %req.task_type,
rpc.system = "grpc",
rpc.method = "SubmitTask",
)
)]
async fn submit_task(&self, req: SubmitTaskRequest) -> Result<SubmitTaskResponse, AppError> {
let task_id = generate_task_id();
Span::current().record("task_id", &task_id);
info!(task_id=%task_id, "task submitted");
self.metrics.tasks_processed.add(1, &[
KeyValue::new("task_type", req.task_type),
KeyValue::new("status", "submitted"),
]);
Ok(SubmitTaskResponse { task_id, status: TaskStatus::Pending })
}