diff --git a/composer.json b/composer.json index 2b31803..11b5590 100644 --- a/composer.json +++ b/composer.json @@ -35,7 +35,8 @@ "orchestra/testbench": "^9.1", "laravel/facade-documenter": "dev-main", "phpstan/phpstan": "^1.11", - "datadog/php-datadogstatsd": "^1.6.1" + "datadog/php-datadogstatsd": "^1.6.1", + "cosmastech/psr-logger-spy": "^0.0.2" }, "suggest": { "datadog/php-datadogstatsd": "For DataDog stats", diff --git a/config/statsd-adapter.php b/config/statsd-adapter.php index 30b1a24..32dd385 100644 --- a/config/statsd-adapter.php +++ b/config/statsd-adapter.php @@ -41,9 +41,10 @@ "disable_telemetry" => null, ], "log_datadog" => [ - // see configuration options: https://docs.datadoghq.com/developers/dogstatsd/?code-lang=php&tab=hostagent#client-instantiation-parameters "adapter" => "log_datadog", "log_level" => "debug", + "log_channel" => null, + // see configuration options: https://docs.datadoghq.com/developers/dogstatsd/?code-lang=php&tab=hostagent#client-instantiation-parameters "decimal_precision" => null, "global_tags" => [], "metric_prefix" => null, diff --git a/src/AdapterManager.php b/src/AdapterManager.php index e59ba1a..707ef5a 100644 --- a/src/AdapterManager.php +++ b/src/AdapterManager.php @@ -144,9 +144,13 @@ protected function createLog_datadogAdapter(array $config): DatadogStatsDClientA protected function createLogDatadogAdapter(array $config): DatadogStatsDClientAdapter { $logLevel = $config['log_level'] ?? 'debug'; + $logChannel = $config['log_channel'] ?? null; + + $logManager = $this->app->make('log'); + $logger = $logManager->channel($logChannel); return new DatadogStatsDClientAdapter( - new DatadogLoggingClient($this->app->make('log'), $config, $logLevel), + new DatadogLoggingClient($logger, $config, $logLevel), $this->getDefaultTags(), clock: $this->getClockImplementation() ); diff --git a/tests/AdapterManagerTest.php b/tests/AdapterManagerTest.php index 1ba6a09..5469ab6 100644 --- a/tests/AdapterManagerTest.php +++ b/tests/AdapterManagerTest.php @@ -2,11 +2,14 @@ namespace Cosmastech\LaravelStatsDAdapter\Tests; +use Cosmastech\PsrLoggerSpy\LogFactory; +use Cosmastech\PsrLoggerSpy\LoggerSpy; use Cosmastech\StatsDClientAdapter\Adapters\Datadog\DatadogStatsDClientAdapter; use Cosmastech\StatsDClientAdapter\Adapters\InMemory\InMemoryClientAdapter; use Cosmastech\StatsDClientAdapter\Adapters\League\LeagueStatsDClientAdapter; use Cosmastech\StatsDClientAdapter\Clients\Datadog\DatadogLoggingClient; use Illuminate\Support\Facades\Config; +use Illuminate\Support\Facades\Log; use League\StatsD\StatsDClient; use PHPUnit\Framework\Attributes\Test; @@ -74,6 +77,30 @@ public function instance_logDatadog_returnsConfiguredDatadogClient(): void self::assertInstanceOf(DatadogLoggingClient::class, $datadogClientAdapter->getClient()); } + #[Test] + public function instance_logDatadog_logsToSpecifiedChannel(): void + { + // Given + //Config::set("logging.channels.null.handler"); + $loggerSpy = new class(new LogFactory()) extends LoggerSpy { + public function pushProcessor() { + + } + }; + Log::extend("spy", fn() => $loggerSpy); + Config::set('statsd-adapter.channels.log_datadog.log_channel', "spy"); + Config::set('logging.channels.spy', ["driver" => "spy"]); + + // And + $datadogLoggingClientAdapter = $this->createAdapterManager()->instance("log_datadog"); + + // When + $datadogLoggingClientAdapter->increment("testing-counter"); + + // Then + + } + public function instance_league_returnsConfiguredLeagueStatsDClient(): void { // Given