Install via Composer:
composer require vendor/package-name
Publish the configuration and migration:
php artisan vendor:publish --provider="Vendor\PackageName\PackageServiceProvider" --tag="config"
php artisan vendor:publish --provider="Vendor\PackageName\PackageServiceProvider" --tag="migrations"
php artisan migrate
First Use Case: Enable logging for a specific route by adding middleware:
Route::get('/tracked-endpoint', function () {
return response()->json(['data' => 'test']);
})->middleware(\Vendor\PackageName\Http\Middleware\TrackRequest::class);
Configure sensitive data filtering in config/package-name.php:
'sensitive_data' => [
'exclude_headers' => ['authorization', 'cookie'],
'mask_fields' => ['password', 'credit_card'],
],
Request/Response Logging:
TrackRequest middleware globally or selectively via route middleware.Log Collection:
IntrospectionProcessor. Logs automatically include:
debug(), error())\Log::debug('User action', ['user_id' => $user->id]);
Exception Tracking:
App\Exceptions\Handler:
public function report(Throwable $exception)
{
if (!app()->bound('package-name')) {
return parent::report($exception);
}
}
Outgoing HTTP Requests:
HttpClient automatically. Logs include:
$client = app(\Vendor\PackageName\Http\Client::class);
$response = $client->get('https://api.example.com/data');
Doctrine Query Logging:
'doctrine' => [
'enabled' => true,
'log_query_params' => env('DB_LOG_PARAMS', false),
],
Console/Queue Tracking:
Artisan commands and Messenger workers are captured automatically.'path_filtering' => [
'include' => ['/api/*', '/admin/*'],
'exclude' => ['/health', '/ping'],
],
$this->app->extend('package-name.sensitive-data', function ($resolver) {
$resolver->addMaskRule('new_field', 'custom_regex');
return $resolver;
});
config/package-name.php:
'async' => [
'connect_timeout' => 5, // seconds
'read_timeout' => 10, // seconds
],
Performance Overhead:
Sensitive Data Leaks:
x-api-key).user.token).tinker to verify masking:
php artisan tinker
>>> \Vendor\PackageName\Support\Facades\SensitiveData::mask('{"token":"abc123"}');
Doctrine Conflicts:
doctrine/dbal and eloquent, ensure the package’s event listeners are registered after Eloquent’s.AppServiceProvider:
public function register()
{
$this->app->bind(
\Vendor\PackageName\Doctrine\Listener::class,
function ($app) { return new \Vendor\PackageName\Doctrine\Listener($app['db']); }
);
}
Async Delivery Failures:
sync delivery) in config/package-name.php:
'async' => [
'fallback_to_sync' => env('PACKAGE_NAME_FALLBACK', false),
],
Log Inspection:
storage/logs/package-name-debug.log.'debug' => env('APP_DEBUG', false),
Stack Trace Context:
vendor/).'exception_context' => [
'exclude_paths' => [
'vendor/',
'bootstrap/cache/',
],
],
Custom Payload Transformers:
Vendor\PackageName\PayloadTransformer to modify payloads before async delivery:
$this->app->bind(\Vendor\PackageName\PayloadTransformer::class, function ($app) {
return new class($app['package-name.transformer']) implements \Vendor\PackageName\Contracts\PayloadTransformer {
public function transform(array $payload): array
{
$payload['custom_field'] = 'value';
return parent::transform($payload);
}
};
});
Webhook Fallback:
curl delivery with a queue job or webhook:
$this->app->singleton(\Vendor\PackageName\Async\Delivery::class, function ($app) {
return new \App\Services\CustomDelivery($app['package-name.config']);
});
Path Filtering Callbacks:
'path_filtering' => [
'callback' => function ($request) {
return $request->user()?->isAdmin();
},
],
How can I help you explore Laravel packages today?