Download the PHP package philiprehberger/laravel-correlation-id without Composer
On this page you can find all versions of the php package philiprehberger/laravel-correlation-id. It is possible to download/install these versions without Composer. Possible dependencies are resolved automatically.
Download philiprehberger/laravel-correlation-id
More information about philiprehberger/laravel-correlation-id
Files in philiprehberger/laravel-correlation-id
Package laravel-correlation-id
Short Description Laravel middleware that generates or propagates correlation IDs for request tracing with automatic log context injection
License MIT
Homepage https://github.com/philiprehberger/laravel-correlation-id
Informations about the package laravel-correlation-id
Laravel Correlation ID
Laravel middleware that generates or propagates correlation IDs for request tracing with automatic log context injection.
Requirements
- PHP 8.2+
- Laravel 11 or 12
Installation
The service provider is registered automatically via Laravel package auto-discovery.
Optionally publish the config:
Usage
Accessing the Correlation ID
Configuration
How It Works
- The middleware inspects incoming request headers in the order defined by
request_headers. - The first non-empty value found is used as-is (propagation path).
- When no matching header is present, a new ID is generated using the configured generator.
- The ID is stored as a request attribute and shared with the log context.
- After the handler returns, the ID is written to the response header defined by
response_header.
Validating Incoming IDs
Incoming correlation IDs from request headers are validated before they are trusted. A value that is too long or contains disallowed characters (newlines, control characters, spaces) is discarded and a fresh ID is generated instead — so an untrusted client cannot inject arbitrary content into your logs, responses, or downstream requests.
You can reuse the same rule in application code:
Custom ID Generator
Control how new correlation IDs are generated when no upstream header is present:
Queue Job Propagation
Propagate the correlation ID from the dispatching context into queued jobs:
The TracksCorrelationId trait captures the current correlation ID when the job is created. The CorrelationIdJobMiddleware restores it when the job runs on a worker.
HTTP Client Propagation
Automatically forward the correlation ID to outgoing HTTP requests made with Laravel's HTTP client:
The middleware adds the X-Correlation-ID header (or your custom header) to every outgoing request.
Trace Spans
Track the timing of operations within a request using lightweight trace spans:
Spans are immutable value objects. Calling endSpan() returns a new instance with the end time set and stores it for later retrieval.
Sentry Integration
When sentry/sentry-laravel is installed and 'sentry' => true, the middleware sets correlation_id as a tag on every Sentry event captured during the request.
API
| Class / Method | Description |
|---|---|
AddCorrelationId middleware |
Generates or propagates the correlation ID and injects it into logs and responses |
CorrelationId::get() |
Read the current correlation ID (null if not yet set) |
CorrelationId::set(string $id) |
Override the correlation ID (useful in tests or CLI commands) |
CorrelationId::generate() |
Generate a new correlation ID using the configured generator |
CorrelationId::isValid(string $id) |
Check a candidate ID against the configured length and pattern rules |
CorrelationId::reset() |
Clear the correlation ID and all trace spans for the current request |
CorrelationId::httpMiddleware(?string $headerName) |
Returns a Guzzle middleware closure for HTTP client propagation |
CorrelationId::startSpan(string $name, array $metadata) |
Start a new trace span linked to the current correlation ID |
CorrelationId::endSpan(Span $span) |
End a span and store it for retrieval |
CorrelationId::spans() |
Get all completed trace spans |
CorrelationId::clearSpans() |
Clear all stored trace spans |
$request->correlationId() |
Request macro that returns the current correlation ID |
TracksCorrelationId trait |
Captures the correlation ID at dispatch time for queue jobs |
CorrelationIdJobMiddleware |
Queue job middleware that restores the correlation ID |
PropagateCorrelationId::handler() |
Static factory for the HTTP client propagation middleware |
Span value object |
Immutable span with name, durationMs(), toArray() |
Development
Support
If you find this project useful:
License
MIT
All versions of laravel-correlation-id with dependencies
illuminate/http Version ^11.0|^12.0
illuminate/log Version ^11.0|^12.0
illuminate/support Version ^11.0|^12.0