PHP code example of plopster / trace-code-maker

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/ */

    

plopster / trace-code-maker example snippets


'default_service' => env('TRACE_CODE_DEFAULT_SERVICE', 'DefaultService'),

'format' => [
    'service_code_length' => 3,     // Length of service code prefix
    'method_hash_length' => 5,      // Length of method hash
    'random_suffix_length' => 4,    // Length of random suffix
    'timestamp_format' => 'ymdHis', // Timestamp format
],

'database' => [
    'connection' => env('TRACE_CODE_DB_CONNECTION', config('database.default')),
    'table' => env('TRACE_CODE_DB_TABLE', 'trace_codes'),
],

'cache' => [
    'enabled' => env('TRACE_CODE_CACHE_ENABLED', true),
    'ttl' => env('TRACE_CODE_CACHE_TTL', 3600), // 1 hour
    'prefix' => 'tracecode:',
],

'validation' => [
    'service' => 'r|min:100|max:599',
    'method' => '|string|max:500',
],

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'
);

[
    'error' => false,
    'traceCode' => 'USR-500-a1b2c-240101123045ABCD'
]

[
    'error' => true,
    'message' => 'Validation failed: The service field is 

'providers' => [
    // ...
    TraceCodeMaker\TraceCodeMakerServiceProvider::class,
],

'aliases' => [
    // ...
    'TraceCodeMaker' => TraceCodeMaker\Facades\TraceCodeMaker::class,
],
bash
php artisan tracecodemaker:install
bash
# Publish configuration and migrations
php artisan tracecodemaker:publish

# Or publish individually
php artisan tracecodemaker:publish --config
php artisan tracecodemaker:publish --migrations
bash
php artisan migrate
bash
config/tracecodemaker.php
bash
# Publish migrations manually
php artisan tracecodemaker:publish --migrations

# Then run migrations
php artisan migrate