Уніфіковане логування для PHP-проєктів на базі Monolog + Symfony Bundle:
SchemaFormatterV1);logging:scan.setFormatter там, де підтримується).timestamp, level, message, context, service, trace, version).cf-ray.^8.2^2.3 || ^3.0symfony/http-kernel: ^5.4 || ^6.4 || ^7.0symfony/config: ^5.4 || ^6.4 || ^7.0Додатково для logging:scan:
symfony/consolesymfony/dependency-injectionnikic/php-parsercomposer require adheart/logging
Якщо це не Symfony Runtime з Flex, переконайтесь, що бандл зареєстрований вручну в config/bundles.php:
<?php
return [
// ...
Adheart\Logging\LoggingBundle::class => ['all' => true],
];
Створіть config/packages/logging.yaml:
logging:
processors:
- message_normalizer
integrations:
- otel_trace
formatter:
schema_version: '1.0.0'
service_name: 'billing-api'
service_version: '%env(string:RELEASE_ID)%'
Після цього:
monolog.logger* буде додано процесори;monolog.handler* буде встановлено SchemaFormatterV1;php bin/console cache:clear
$logger->info('User logged in', ['user' => ['id' => '123']]);
service і version.message_normalizer → Adheart\Logging\Core\Processors\MessageNormalizerProcessortrace → Adheart\Logging\Core\Processors\TraceContextProcessorotel → Adheart\Logging\Integration\OpenTelemetry\Trace\OpenTelemetryTraceContextProvidercf_ray → Adheart\Logging\Integration\OpenTelemetry\Trace\CfRayTraceContextProviderotel_trace:
traceotel, cf_rayМожна підключати свої сервіси без форку пакета:
logging:
processors:
- custom_processor
integrations:
- custom_trace
aliases:
processors:
custom_processor: '@app.logging.processor.custom'
trace_providers:
app_provider: '@app.trace.provider'
integrations:
custom_trace:
processors: ['trace']
trace_providers: ['app_provider']
Якщо встановлені dev-залежності для сканера, доступна команда:
php bin/console logging:scan --summary
Приклади:
php bin/console logging:scan --format=json --summary
php bin/console logging:scan --logger-name=app --severity-min=error
php bin/console logging:scan --path-prefix=src/Billing --exclude-path-prefix=src/Billing/Legacy
php bin/console logging:scan --list-loggers
How can I help you explore Laravel packages today?