Structured logging with severity levels and contextual attributes.
Log records can include structured data for better searchability and analysis in observability backends.
UNIFIED DATA PROCESSING FRAMEWORK
composer require flow-php/etl ~0.32.0 Extracts
Read from various data sources.
Transforms
Shape and optimize for your needs.
Loads
Store and secure in one of many available data sinks.
Examples:
Description
Documentation
- Telemetry Library
- OTLP Bridge - Export telemetry data to OpenTelemetry Protocol backends
- PSR-18 Telemetry Bridge - HTTP client instrumentation for telemetry
- PSR-7 Telemetry Bridge - HTTP message telemetry formatting
- Monolog Telemetry Bridge - Integrate telemetry with Monolog logging
- Symfony HttpFoundation Telemetry - Telemetry events for Symfony HTTP requests
- Symfony Telemetry Bundle - Symfony bundle for telemetry integration
Code
<?php
declare(strict_types=1);
use Flow\Telemetry\Provider\Clock\SystemClock;
use function Flow\Telemetry\DSL\{
console_log_exporter,
logger_provider,
memory_context_storage,
memory_log_processor,
resource_detector,
telemetry
};
use function Flow\ETL\DSL\clock;
require __DIR__ . '/vendor/autoload.php';
$telemetry = telemetry(
resource_detector()->detect(),
null,
null,
logger_provider(
memory_log_processor(console_log_exporter(colors: false, maxBodyLength: 200)),
clock(),
memory_context_storage(),
),
)->registerShutdownFunction();
$logger = $telemetry->logger('order-service');
$logger->info('Application started', [
'environment' => 'development',
]);
$logger->debug('Processing batch', [
'batch.size' => 100,
'batch.id' => 'B-001',
]);
$logger->warn('Slow query detected', [
'query.duration_ms' => 5000,
'query.table' => 'orders',
]);
$logger->error('Connection failed', [
'service.name' => 'payment-gateway',
'error.code' => 'TIMEOUT',
]);