Skip to content

Commit 2bbd033

Browse files
authored
add log_channel option to log_datadog (#7)
1 parent 0f3f757 commit 2bbd033

File tree

4 files changed

+37
-3
lines changed

4 files changed

+37
-3
lines changed

composer.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,8 @@
3535
"orchestra/testbench": "^9.1",
3636
"laravel/facade-documenter": "dev-main",
3737
"phpstan/phpstan": "^1.11",
38-
"datadog/php-datadogstatsd": "^1.6.1"
38+
"datadog/php-datadogstatsd": "^1.6.1",
39+
"cosmastech/psr-logger-spy": "^0.0.2"
3940
},
4041
"suggest": {
4142
"datadog/php-datadogstatsd": "For DataDog stats",

config/statsd-adapter.php

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -41,9 +41,10 @@
4141
"disable_telemetry" => null,
4242
],
4343
"log_datadog" => [
44-
// see configuration options: https://docs.datadoghq.com/developers/dogstatsd/?code-lang=php&tab=hostagent#client-instantiation-parameters
4544
"adapter" => "log_datadog",
4645
"log_level" => "debug",
46+
"log_channel" => null,
47+
// see configuration options: https://docs.datadoghq.com/developers/dogstatsd/?code-lang=php&tab=hostagent#client-instantiation-parameters
4748
"decimal_precision" => null,
4849
"global_tags" => [],
4950
"metric_prefix" => null,

src/AdapterManager.php

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -144,9 +144,13 @@ protected function createLog_datadogAdapter(array $config): DatadogStatsDClientA
144144
protected function createLogDatadogAdapter(array $config): DatadogStatsDClientAdapter
145145
{
146146
$logLevel = $config['log_level'] ?? 'debug';
147+
$logChannel = $config['log_channel'] ?? null;
148+
149+
$logManager = $this->app->make('log');
150+
$logger = $logManager->channel($logChannel);
147151

148152
return new DatadogStatsDClientAdapter(
149-
new DatadogLoggingClient($this->app->make('log'), $config, $logLevel),
153+
new DatadogLoggingClient($logger, $config, $logLevel),
150154
$this->getDefaultTags(),
151155
clock: $this->getClockImplementation()
152156
);

tests/AdapterManagerTest.php

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,11 +2,14 @@
22

33
namespace Cosmastech\LaravelStatsDAdapter\Tests;
44

5+
use Cosmastech\PsrLoggerSpy\LogFactory;
6+
use Cosmastech\PsrLoggerSpy\LoggerSpy;
57
use Cosmastech\StatsDClientAdapter\Adapters\Datadog\DatadogStatsDClientAdapter;
68
use Cosmastech\StatsDClientAdapter\Adapters\InMemory\InMemoryClientAdapter;
79
use Cosmastech\StatsDClientAdapter\Adapters\League\LeagueStatsDClientAdapter;
810
use Cosmastech\StatsDClientAdapter\Clients\Datadog\DatadogLoggingClient;
911
use Illuminate\Support\Facades\Config;
12+
use Illuminate\Support\Facades\Log;
1013
use League\StatsD\StatsDClient;
1114
use PHPUnit\Framework\Attributes\Test;
1215

@@ -74,6 +77,31 @@ public function instance_logDatadog_returnsConfiguredDatadogClient(): void
7477
self::assertInstanceOf(DatadogLoggingClient::class, $datadogClientAdapter->getClient());
7578
}
7679

80+
#[Test]
81+
public function instance_logDatadog_logsToSpecifiedChannel(): void
82+
{
83+
// Given
84+
$loggerSpy = new class (new LogFactory()) extends LoggerSpy {
85+
public function pushProcessor(): void
86+
{
87+
// This will no longer be necessary if/when this PR is merged into laravel/framework https://github.com/laravel/framework/pull/52117/files
88+
}
89+
};
90+
Log::extend("spy", fn () => $loggerSpy);
91+
Config::set('statsd-adapter.channels.log_datadog.log_channel', "spy");
92+
Config::set('logging.channels.spy', ["driver" => "spy"]);
93+
94+
// And
95+
$datadogLoggingClientAdapter = $this->createAdapterManager()->instance("log_datadog");
96+
97+
// When
98+
$datadogLoggingClientAdapter->increment("testing-counter");
99+
100+
// Then
101+
self::assertCount(1, $logs = $loggerSpy->getLogs());
102+
self::assertEquals("testing-counter:1|c", $logs[0]->message);
103+
}
104+
77105
public function instance_league_returnsConfiguredLeagueStatsDClient(): void
78106
{
79107
// Given

0 commit comments

Comments
 (0)