1. Go to this page and download the library: Download plopster/trace-code-maker 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/ */
use TraceCodeMaker;
$service = 'UserService';
$httpCode = 500;
$methodName = 'createUser';
$className = 'UserController';
$description = 'Internal server error during user creation'; // Optional
$response = TraceCodeMaker::fetchOrCreateTraceCode(
$service,
$httpCode,
$methodName,
$className,
$description
);
if ($response['error']) {
// Handle error
logger()->error('TraceCodeMaker error: ' . $response['message']);
} else {
// Use the trace code
$traceCode = $response['traceCode'];
logger()->error('Error occurred', ['trace_code' => $traceCode]);
}
use TraceCodeMaker;
use Illuminate\Http\JsonResponse;
class ApiController extends Controller
{
public function store(Request $request): JsonResponse
{
try {
// Your business logic here
return response()->json(['success' => true]);
} catch (\Exception $e) {
$traceResponse = TraceCodeMaker::fetchOrCreateTraceCode(
'ApiService',
500,
'store',
self::class,
$e->getMessage()
);
$traceCode = $traceResponse['error'] ? 'UNKNOWN' : $traceResponse['traceCode'];
return response()->json([
'error' => true,
'message' => 'Internal server error',
'trace_code' => $traceCode
], 500);
}
}
}
use TraceCodeMaker;
class ErrorTrackingMiddleware
{
public function handle($request, Closure $next)
{
try {
return $next($request);
} catch (\Exception $e) {
$traceResponse = TraceCodeMaker::fetchOrCreateTraceCode(
'Middleware',
$e->getCode() ?: 500,
'handle',
self::class
);
if (!$traceResponse['error']) {
$request->attributes->set('trace_code', $traceResponse['traceCode']);
}
throw $e;
}
}
}
// If you set a default service in config, you can omit it
$response = TraceCodeMaker::fetchOrCreateTraceCode(
config('tracecodemaker.default_service'), // Uses default from config
404,
'show',
'ProductController'
);