Flow PHP

functions.php

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
ValueNormalizer

severity_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
SeverityMapper

log_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
LogRecordConverter

telemetry_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 severity

Example with custom converter:

$converter = log_record_converter(
    severityMapper: severity_mapper([
        Level::Debug->value => Severity::TRACE,
    ])
);
$monolog->pushHandler(telemetry_handler($logger, $converter));
Return values
TelemetryHandler

        
On this page

Search results