use tracing::{info, instrument};
#[instrument]
fn process_request(user_id: u64) {
info!(user_id, "Processing request");
// Work happens here
import pino, { Logger } from 'pino';
import { AsyncLocalStorage } from 'node:async_hooks';
export interface Store {
requestId: string;
logger: Logger;
import { NodeSDK } from '@opentelemetry/sdk-node';
import { OTLPTraceExporter } from '@opentelemetry/exporter-trace-otlp-http';
import { BatchSpanProcessor } from '@opentelemetry/sdk-trace-base';
import { getNodeAutoInstrumentations } from '@opentelemetry/auto-instrumentations-node';
import { Resource } from '@opentelemetry/resources';
import {
import { AsyncLocalStorage } from 'node:async_hooks';
interface Store {
requestId: string;
}
use std::time::Instant;
use axum::{
extract::Request,
http::HeaderValue,
middleware::Next,
package observability
import (
"context"
"go.opentelemetry.io/otel"
package com.example.observability;
public final class CorrelationIdConstants {
public static final String HEADER_NAME = "X-Correlation-Id";
public static final String MDC_KEY = "correlationId";
package com.example.tracing;
import jakarta.servlet.Filter;
import jakarta.servlet.FilterChain;
import jakarta.servlet.ServletException;
import jakarta.servlet.ServletRequest;
package logctx
import (
"context"
"log/slog"
)