diff --git a/composer.json b/composer.json index 7c6a8a4..f6293d3 100644 --- a/composer.json +++ b/composer.json @@ -16,6 +16,12 @@ ], "require": { "monolog/monolog": "^3.9", - "symfony/http-client": "^7.3" + "logdb/client": "^0.1.0" + }, + "repositories": { + "logdb": { + "type": "composer", + "url": "https://dev.noccylabs.info/api/packages/logdb/composer" + } } } diff --git a/src/LogDbHandler.php b/src/LogDbHandler.php index f8c8d4a..a64ec81 100644 --- a/src/LogDbHandler.php +++ b/src/LogDbHandler.php @@ -2,6 +2,8 @@ namespace LogDb\Monolog; +use LogDb\Client\LogDbClient; +use LogDb\Client\LogEvent; use Monolog\Handler\AbstractProcessingHandler; use Monolog\Handler\HandlerInterface; use Monolog\Level; @@ -11,12 +13,14 @@ use Symfony\Contracts\HttpClient\HttpClientInterface; class LogDbHandler extends AbstractProcessingHandler { - private HttpClientInterface $client; + //private HttpClientInterface $client; private bool $batching = false; private array $batched = []; + private LogDbClient $client; + public function __construct( private readonly string $serverUrl, private readonly ?string $scope = null, @@ -26,7 +30,24 @@ class LogDbHandler extends AbstractProcessingHandler ) { parent::__construct($level, $bubble); - $this->client = HttpClient::createForBaseUri($this->serverUrl); + //$this->client = HttpClient::createForBaseUri($this->serverUrl); + + if (!str_contains($serverUrl, "://")) { + $proto = 'http'; + $server = $serverUrl; + } else { + [$proto,$server] = explode("://", $serverUrl, 2); + } + + switch ($proto) { + case 'http': + case 'https': + $this->client = new LogDbClient("{$proto}://{$server}", "http"); + break; + case 'udp': + $this->client = new LogDbClient($server, "udp"); + break; + } } public function handleBatch(array $records): void @@ -39,7 +60,7 @@ class LogDbHandler extends AbstractProcessingHandler protected function write(LogRecord $record): void { - $event = [ + /*$event = [ 'source' => $this->source, 'scope' => $this->scope, 'date' => $record->datetime->format('Y-m-d H:i:s P'), @@ -47,7 +68,16 @@ class LogDbHandler extends AbstractProcessingHandler 'brief' => $record->message, 'detail' => $record->formatted, 'context' => $record->context, - ]; + ];*/ + $event = new LogEvent( + source: $this->source, + scope: $this->scope, + date: $record->datetime, // ->format('Y-m-d H:i:s P'), + level: $record->level->toPsrLogLevel(), + brief: $record->message, + detail: $record->formatted, + context: $record->context, + ); if ($this->batching) { $this->batched[] = $event; @@ -55,10 +85,11 @@ class LogDbHandler extends AbstractProcessingHandler } try { - $response = $this->client->request('POST', '/api/logdb/v1/create-event', [ - 'json' => $event - ]); - $response->getContent(true); + $this->client->logEvent($event); + //$response = $this->client->request('POST', '/api/logdb/v1/create-event', [ + // 'json' => $event + //]); + //$response->getContent(true); } catch (\Exception $e) { // Silent fault. } @@ -67,13 +98,14 @@ class LogDbHandler extends AbstractProcessingHandler private function commit(): void { try { - $response = $this->client->request('POST', '/api/logdb/v1/create-event', [ - 'json' => $this->batched - ]); - $response->getContent(true); + $this->client->logEventBatch($this->batched); + //$response = $this->client->request('POST', '/api/logdb/v1/create-event', [ + // 'json' => $this->batched + //]); + //$response->getContent(true); } finally { $this->batched = []; } } -} \ No newline at end of file +}