Use Log::withContext() in HTTP middleware to automatically attach request IDs, user IDs, and tenant metadata to every log entry written during a request.
When debugging distributed systems or high-traffic applications, tracing which logs belong to a specific HTTP request or background job is difficult when log entries lack contextual identifiers.
Log::withContext() binds contextual data to the active logger instance for the remainder of the request lifecycle.
Binding Context in Middleware
Create a request tracing middleware:
namespace App\Http\Middleware;
use Closure;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Log;
use Illuminate\Support\Str;
class LogContextMiddleware
{
public function handle(Request $request, Closure $next)
{
$requestId = (string) Str::uuid();
// Bind request metadata globally to all subsequent log calls
Log::withContext([
'request_id' => $requestId,
'user_id' => $request->user()?->id,
'ip' => $request->ip(),
'url' => $request->fullUrl(),
]);
$response = $next($request);
$response->headers->set('X-Request-ID', $requestId);
return $response;
}
}
Automatic Context Injection
Any log call made inside controllers, jobs, or services automatically includes the context:
// Inside a controller action:
Log::info('Order payment processed successfully.');
// Log output in storage/logs/laravel.log:
// [2026-02-15] local.INFO: Order payment processed successfully. {"request_id":"c7a1...", "user_id":42, "ip":"127.0.0.1"}
Summary
- Injects request metadata into every log statement automatically.
- Correlates frontend errors with backend logs using
X-Request-ID. - Keeps individual log calls clean and focused without manual metadata arrays.
Related Tips
View all tips →Correlate Requests and Queue Jobs with the Context Facade
Use the Context facade to capture request metadata that automatically propagates to logs, exception reports, and queued jobs.
Measure Code Execution Time with Benchmark::measure() and dd()
Use Laravel's Benchmark helper to test and compare execution times of complex queries, algorithms, and closures.