build(monitoring): implement open-telemetry support
This commit is contained in:
parent
4361655127
commit
0bff14f820
@ -12,7 +12,14 @@
|
||||
"doctrine/doctrine-migrations-bundle": "^3.3",
|
||||
"doctrine/orm": "^3.2",
|
||||
"fakerphp/faker": "^1.23",
|
||||
"grpc/grpc": "^1.57",
|
||||
"nubium/this-should-never-happen-exception": "^1.0",
|
||||
"nyholm/psr7": "^1.8",
|
||||
"open-telemetry/exporter-otlp": "^1.0",
|
||||
"open-telemetry/opentelemetry-auto-symfony": "1.0.0beta27",
|
||||
"open-telemetry/opentelemetry-logger-monolog": "^1.0",
|
||||
"open-telemetry/sdk": "^1.0",
|
||||
"open-telemetry/transport-grpc": "^1.0",
|
||||
"phpdocumentor/reflection-docblock": "^5.4",
|
||||
"phpstan/phpdoc-parser": "^1.29",
|
||||
"symfony/asset": "7.1.*",
|
||||
|
995
composer.lock
generated
995
composer.lock
generated
File diff suppressed because it is too large
Load Diff
10
config/packages/http_discovery.yaml
Normal file
10
config/packages/http_discovery.yaml
Normal file
@ -0,0 +1,10 @@
|
||||
services:
|
||||
Psr\Http\Message\RequestFactoryInterface: '@http_discovery.psr17_factory'
|
||||
Psr\Http\Message\ResponseFactoryInterface: '@http_discovery.psr17_factory'
|
||||
Psr\Http\Message\ServerRequestFactoryInterface: '@http_discovery.psr17_factory'
|
||||
Psr\Http\Message\StreamFactoryInterface: '@http_discovery.psr17_factory'
|
||||
Psr\Http\Message\UploadedFileFactoryInterface: '@http_discovery.psr17_factory'
|
||||
Psr\Http\Message\UriFactoryInterface: '@http_discovery.psr17_factory'
|
||||
|
||||
http_discovery.psr17_factory:
|
||||
class: Http\Discovery\Psr17Factory
|
@ -4,7 +4,11 @@ monolog:
|
||||
|
||||
when@dev:
|
||||
monolog:
|
||||
|
||||
handlers:
|
||||
otel:
|
||||
type: service # I wouldn't use this in a real application in @dev environment
|
||||
id: App\Bridge\Monolog\Handler\SymfonyOtelHandler
|
||||
main:
|
||||
type: stream
|
||||
path: "%kernel.logs_dir%/%kernel.environment%.log"
|
||||
|
35
src/Bridge/Monolog/Handler/SymfonyOtelHandler.php
Normal file
35
src/Bridge/Monolog/Handler/SymfonyOtelHandler.php
Normal file
@ -0,0 +1,35 @@
|
||||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
namespace App\Bridge\Monolog\Handler;
|
||||
|
||||
use Monolog\Handler\AbstractHandler;
|
||||
use Monolog\LogRecord;
|
||||
use OpenTelemetry\API\Globals;
|
||||
use OpenTelemetry\Contrib\Logs\Monolog\Handler;
|
||||
use Psr\Log\LogLevel;
|
||||
|
||||
/**
|
||||
* This handler will send logs to OpenTelemetry using the Monolog adapter.
|
||||
*/
|
||||
final class SymfonyOtelHandler extends AbstractHandler
|
||||
{
|
||||
private readonly Handler $innerHandler;
|
||||
|
||||
public function __construct()
|
||||
{
|
||||
parent::__construct();
|
||||
|
||||
$this->innerHandler = new Handler(
|
||||
Globals::loggerProvider(),
|
||||
LogLevel::INFO, //or `Logger::INFO`, or `Level::Info` depending on monolog version
|
||||
true,
|
||||
);
|
||||
}
|
||||
|
||||
public function handle(LogRecord $record): bool
|
||||
{
|
||||
return $this->innerHandler->handle($record);
|
||||
}
|
||||
}
|
12
symfony.lock
12
symfony.lock
@ -26,6 +26,18 @@
|
||||
"migrations/.gitignore"
|
||||
]
|
||||
},
|
||||
"php-http/discovery": {
|
||||
"version": "1.19",
|
||||
"recipe": {
|
||||
"repo": "github.com/symfony/recipes",
|
||||
"branch": "main",
|
||||
"version": "1.18",
|
||||
"ref": "f45b5dd173a27873ab19f5e3180b2f661c21de02"
|
||||
},
|
||||
"files": [
|
||||
"config/packages/http_discovery.yaml"
|
||||
]
|
||||
},
|
||||
"phpstan/phpstan": {
|
||||
"version": "1.11",
|
||||
"recipe": {
|
||||
|
Loading…
Reference in New Issue
Block a user