eerzho / opentelemetry-auto-class-laravel
Trace what your Laravel methods received, returned, and threw — without writing a single span.
Package info
github.com/eerzho/opentelemetry-auto-class-laravel
pkg:composer/eerzho/opentelemetry-auto-class-laravel
Requires
- php: >=8.2
- ext-opentelemetry: *
- eerzho/opentelemetry-auto-class: v0.5.1
- illuminate/support: ^11.0 || ^12.0 || ^13.0
- open-telemetry/api: ^1.0
README
Trace what your Laravel methods received, returned, and threw — without writing a single span.
The Laravel integration for opentelemetry-auto-class — your classes are discovered and registered automatically.
This is a read-only sub-split. Please open issues and pull requests in the monorepo.
Installation
composer require eerzho/opentelemetry-auto-class-laravel
Requirements:
- ext-opentelemetry
- PHP 8.2+
- Laravel 10+
Configuration
Scanned namespaces default to App\. To customize, publish the config:
php artisan vendor:publish --tag=trace-config
// config/trace.php return [ 'namespaces' => [ 'App\\Services\\', 'App\\Jobs\\', 'Domain\\', ], ];
Usage
Add #[Trace] to any class in a scanned namespace:
namespace App\Services; use Eerzho\Instrumentation\Class\Attribute\Trace; use Eerzho\Instrumentation\Class\Attribute\TraceMethod; use Eerzho\Instrumentation\Class\Attribute\TraceProperties; #[Trace] // mark the class for tracing class OrderService { // span "App\Services\OrderService::pay" #[TraceMethod(exclude: ['card'])] // hide "card" from the span public function pay(int $orderId, string $card, Address $address): void {} public function healthCheck(): bool {} // no #[TraceMethod] -> not traced } #[TraceProperties(exclude: ['zip'])] // expand every prop but zip class Address { public function __construct(public string $city, public string $zip) {} }
All three attributes and their options are fully documented in the core.
How it works
On boot the service provider:
- Reads namespaces from
config/trace.php - Discovers classes in those namespaces via Composer's
ClassLoader::getClassMap() - Scans them for the
#[Trace]attribute - Registers
ext-opentelemetryhooks for matched methods
Only classes present in the Composer class map are discovered — run
composer dump-autoload -oin production so nothing is missed.
Disabling instrumentation
OTEL_PHP_DISABLED_INSTRUMENTATIONS=class