adheart / logging
Unified logging stuff for PHP projects
dev-main
2026-05-02 12:24 UTC
Requires
- php: ^8.2
- monolog/monolog: ^2.3 || ^3.0
- symfony/config: ^5.4 || ^6.4 || ^7.0
- symfony/http-kernel: ^5.4 || ^6.4 || ^7.0
Requires (Dev)
- nikic/php-parser: ^5.0
- phpunit/phpunit: ^10.5
- squizlabs/php_codesniffer: ^4.0
- symfony/console: ^6.0 || ^7.0
- symfony/dependency-injection: ^5.4 || ^6.4 || ^7.0
- vimeo/psalm: ^6.15
Suggests
- nikic/php-parser: Required by logging:scan to parse PHP files.
- symfony/console: Required to register and run the logging:scan command.
- symfony/dependency-injection: Required to wire scan command services in Symfony containers.
This package is auto-updated.
Last update: 2026-05-02 12:24:42 UTC
README
Уніфіковане логування для PHP-проєктів на базі Monolog + Symfony Bundle:
- єдиний JSON-формат логів (
SchemaFormatterV1); - процесори для нормалізації повідомлень і trace-контексту;
- інтеграція з OpenTelemetry trace context;
- інвентаризація використання логерів через
logging:scan.
Що ви отримуєте після інтеграції
- Автоматичне застосування форматера до Monolog handlers (
setFormatterтам, де підтримується). - Автоматичне підключення вибраних процесорів до всіх Monolog loggers.
- Однакова структура подій у всіх сервісах (поля
timestamp,level,message,context,service,trace,version). - Опціонально: enrichment trace-контекстом з OpenTelemetry і заголовка
cf-ray.
Сумісність
- PHP:
^8.2 - Monolog:
^2.3 || ^3.0 - Symfony components:
symfony/http-kernel:^5.4 || ^6.4 || ^7.0symfony/config:^5.4 || ^6.4 || ^7.0
Додатково для logging:scan:
symfony/consolesymfony/dependency-injectionnikic/php-parser
Встановлення
composer require adheart/logging
Якщо це не Symfony Runtime з Flex, переконайтесь, що бандл зареєстрований вручну в config/bundles.php:
<?php return [ // ... Adheart\Logging\LoggingBundle::class => ['all' => true], ];
Швидкий старт (Symfony)
Створіть 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; - логи підуть у стандартизованому JSON.
Базова перевірка після інтеграції
- Очистіть/прогрійте контейнер:
php bin/console cache:clear
- Згенеруйте тестовий лог із будь-якого місця в застосунку:
$logger->info('User logged in', ['user' => ['id' => '123']]);
- Перевірте raw-рядок у stdout/file-handler: має бути валідний JSON з полями
serviceіversion.
Вбудовані alias-и
Processors
message_normalizer→Adheart\Logging\Core\Processors\MessageNormalizerProcessortrace→Adheart\Logging\Core\Processors\TraceContextProcessor
Trace providers
otel→Adheart\Logging\Integration\OpenTelemetry\Trace\OpenTelemetryTraceContextProvidercf_ray→Adheart\Logging\Integration\OpenTelemetry\Trace\CfRayTraceContextProvider
Integrations
otel_trace:- processors:
trace - trace_providers:
otel,cf_ray
- processors:
Кастомізація через alias-и
Можна підключати свої сервіси без форку пакета:
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