DSL
Functions
value_normalizer()
Create a ValueNormalizer for converting arbitrary PHP values to Telemetry attribute types.
value_normalizer() : ValueNormalizer
The normalizer handles:
- null → 'null' string
- scalars (string, int, float, bool) → unchanged
- DateTimeInterface → unchanged
- Throwable → unchanged
- arrays → recursively normalized
- objects with __toString() → string cast
- objects without __toString() → class name
- other types → get_debug_type() result
Example usage:
$normalizer = value_normalizer();
$normalized = $normalizer->normalize($value);
Return values
ValueNormalizerseverity_mapper()
Create a SeverityMapper for mapping Monolog levels to Telemetry severities.
severity_mapper([null|array<int, Severity> $customMapping = null ]) : SeverityMapper
Parameters
- $customMapping : null|array<int, Severity> = null
-
Optional custom mapping (Monolog Level value => Telemetry Severity)
Example with default mapping:
$mapper = severity_mapper();Example with custom mapping:
use Monolog\Level; use Flow\Telemetry\Logger\Severity; $mapper = severity_mapper([ Level::Debug->value => Severity::DEBUG, Level::Info->value => Severity::INFO, Level::Notice->value => Severity::WARN, // Custom: NOTICE → WARN instead of INFO Level::Warning->value => Severity::WARN, Level::Error->value => Severity::ERROR, Level::Critical->value => Severity::FATAL, Level::Alert->value => Severity::FATAL, Level::Emergency->value => Severity::FATAL, ]);
Return values
SeverityMapperlog_record_converter()
Create a LogRecordConverter for converting Monolog LogRecord to Telemetry LogRecord.
log_record_converter([null|SeverityMapper $severityMapper = null ][, null|ValueNormalizer $valueNormalizer = null ]) : LogRecordConverter
The converter handles:
- Severity mapping from Monolog Level to Telemetry Severity
- Message body conversion
- Channel and level name as monolog.* attributes
- Context values as context.* attributes (Throwables use setException())
- Extra values as extra.* attributes
Parameters
- $severityMapper : null|SeverityMapper = null
-
Custom severity mapper (defaults to standard mapping)
- $valueNormalizer : null|ValueNormalizer = null
-
Custom value normalizer (defaults to standard normalizer)
Example usage:
$converter = log_record_converter(); $telemetryRecord = $converter->convert($monologRecord);Example with custom mapper:
$converter = log_record_converter( severityMapper: severity_mapper([ Level::Debug->value => Severity::TRACE, ]) );
Return values
LogRecordConvertertelemetry_handler()
Create a TelemetryHandler for forwarding Monolog logs to Flow Telemetry.
telemetry_handler(Logger $logger[, LogRecordConverter $converter = new LogRecordConverter() ][, Level $level = Level::Debug ][, bool $bubble = true ]) : TelemetryHandler
Parameters
- $logger : Logger
-
The Flow Telemetry logger to forward logs to
- $converter : LogRecordConverter = new LogRecordConverter()
-
Converter to transform Monolog LogRecord to Telemetry LogRecord
- $level : Level = Level::Debug
-
The minimum logging level at which this handler will be triggered
- $bubble : bool = true
-
Whether messages handled by this handler should bubble up to other handlers
Example usage:
use Monolog\Logger as MonologLogger; use function Flow\Bridge\Monolog\Telemetry\DSL\telemetry_handler; use function Flow\Telemetry\DSL\telemetry; $telemetry = telemetry(); $logger = $telemetry->logger('my-app'); $monolog = new MonologLogger('channel'); $monolog->pushHandler(telemetry_handler($logger)); $monolog->info('User logged in', ['user_id' => 123]); // → Forwarded to Flow Telemetry with INFO severityExample with custom converter:
$converter = log_record_converter( severityMapper: severity_mapper([ Level::Debug->value => Severity::TRACE, ]) ); $monolog->pushHandler(telemetry_handler($logger, $converter));