PHP code example of michael4d45 / context-logging
1. Go to this page and download the library: Download michael4d45/context-logging library . Choose the download type require .
2. Extract the ZIP file and open the index.php.
3. Add this code to the index.php.
<?php
require_once('vendor/autoload.php');
/* Start to develop here. Best regards https://php-download.com/ */
michael4d45 / context-logging example snippets
use Illuminate\Foundation\Configuration\Middleware;
use Michael4d45\ContextLogging\Middleware\RequestContextMiddleware;
use Michael4d45\ContextLogging\Middleware\EmitContextMiddleware;
->withMiddleware(function (Middleware $middleware): void {
$middleware->append(RequestContextMiddleware::class);
$middleware->append(EmitContextMiddleware::class);
})
$middleware->prepend(RequestContextMiddleware::class);
use Illuminate\Foundation\Configuration\Middleware;
use Michael4d45\ContextLogging\Middleware\RequestContextMiddleware;
use Michael4d45\ContextLogging\Middleware\EmitContextMiddleware;
->withMiddleware(function (Middleware $middleware): void {
$middleware->use([
\Illuminate\Foundation\Http\Middleware\InvokeDeferredCallbacks::class,
\Illuminate\Http\Middleware\TrustProxies::class,
\Illuminate\Http\Middleware\HandleCors::class,
\Illuminate\Foundation\Http\Middleware\PreventRequestsDuringMaintenance::class,
\Illuminate\Http\Middleware\ValidatePostSize::class,
\Illuminate\Foundation\Http\Middleware\TrimStrings::class,
\Illuminate\Foundation\Http\Middleware\ConvertEmptyStringsToNull::class,
// Contextual logging
RequestContextMiddleware::class,
EmitContextMiddleware::class,
]);
})
namespace App\Http\Controllers;
use Illuminate\Support\Facades\Log;
class OrderController extends Controller
{
public function store(Request $request)
{
Log::info('Order placed', ['order_id' => 123]);
// More application logic...
Log::info('Payment processed', ['amount' => 99.99]);
// Even error conditions
try {
$this->processOrder();
} catch (\Exception $e) {
Log::error('Order processing failed', [
'error' => $e->getMessage(),
'order_id' => 123
]);
}
return response()->json(['status' => 'success']);
}
}
use Michael4d45\ContextLogging\HttpClientInstrumentation;
use Michael4d45\ContextLogging\HttpContextHooks;
public function boot(): void
{
// Optional explicit registration.
app(HttpClientInstrumentation::class)->register();
// Optional request hook.
HttpContextHooks::beforeRequest(function (array $payload): array {
$payload['request']['service'] = 'external-api';
return $payload;
});
// Optional response hook.
HttpContextHooks::afterResponse(function (array $payload): array {
$payload['response']['classified_as'] = ($payload['response']['status'] ?? 0) >= 500
? 'server_error'
: 'ok';
return $payload;
});
}
'http' => [
'enabled' => true,
'capture_headers' => false,
'capture_body' => false,
'redact_value' => '[redacted]',
'redact_body_fields' => ['password', 'token', 'secret'],
'redact_query_params' => ['token', 'access_token', 'api_key'],
],
use Illuminate\Support\Facades\Http;
use Michael4d45\ContextLogging\ContextStore;
public function syncOrders(ContextStore $contextStore): void
{
$httpId = $contextStore->beginHttpCall([
'method' => 'GET',
'url' => 'https://api.example.com/orders',
]);
try {
$response = Http::get('https://api.example.com/orders');
$contextStore->addHttpContext($httpId, [
'service' => 'orders-api',
'operation' => 'sync_orders',
]);
$contextStore->completeHttpCall($httpId, [
'status' => $response->status(),
'ok' => $response->ok(),
]);
} catch (\Throwable $exception) {
$contextStore->completeHttpCall($httpId, [
'status' => 0,
'error' => $exception->getMessage(),
]);
throw $exception;
}
}
bash
php artisan vendor:publish --provider="Michael4d45\\ContextLogging\\ContextLoggingServiceProvider" --tag=config