Skip to content
This repository was archived by the owner on Jul 7, 2025. It is now read-only.

Commit aaf4ad8

Browse files
authored
Merge pull request #7 from myLocalInfluence/rfe/handler-should-not-have-to-format#6
feat: Handle Mustn't Format Values
2 parents 1c80dea + 8aa8622 commit aaf4ad8

File tree

8 files changed

+218
-5
lines changed

8 files changed

+218
-5
lines changed

.idea/laravel-datadog-logger.iml

Lines changed: 80 additions & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

.idea/php.xml

Lines changed: 87 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

composer.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,8 @@
2828
},
2929
"require-dev": {
3030
"phpunit/phpunit": ">=7.5.0",
31-
"symfony/thanks": "*"
31+
"symfony/thanks": "*",
32+
"php-mock/php-mock-phpunit": "^2.4"
3233
},
3334
"autoload": {
3435
"psr-4": {

phpunit.xml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@
2121
</filter>
2222
<php>
2323
<server name="APP_ENV" value="testing"/>
24+
<server name="APP_NAME" value="laravel-datadog-logger"/>
2425
<server name="BCRYPT_ROUNDS" value="4"/>
2526
<server name="CACHE_DRIVER" value="array"/>
2627
<server name="MAIL_DRIVER" value="array"/>

src/DataDogFormatter.php

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
namespace Myli\DatadogLogger;
44

55
use Monolog\Formatter\JsonFormatter;
6+
use Monolog\Logger;
67

78
/**
89
* Class DataDogFormatter
@@ -14,6 +15,21 @@
1415
*/
1516
class DataDogFormatter extends JsonFormatter
1617
{
18+
19+
/**
20+
* Set this formatter to the logger
21+
*
22+
* @param $logger
23+
*
24+
* @return void
25+
*/
26+
public function __invoke(Logger $logger)
27+
{
28+
foreach ($logger->getHandlers() as $handler) {
29+
$handler->setFormatter($this);
30+
}
31+
}
32+
1733
/**
1834
* Appends every variable needed by DataDog
1935
*
@@ -38,6 +54,9 @@ public function format(array $record)
3854
if (isset($record['level_name'])) {
3955
$record['status'] = $record['level_name'];
4056
}
57+
$record['ddsource'] = 'php-' . php_sapi_name();
58+
$record['service'] = env('APP_NAME');
59+
$record['hostname'] = gethostname();
4160

4261
return parent::format($record);
4362
}

src/DataDogHandler.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -108,7 +108,7 @@ protected function send(string $data) : void
108108
{
109109
$client = $this->getHttpClient();
110110
try {
111-
$client->request('POST', sprintf('?ddsource=%s&service=%s&hostname=%s', 'php' . php_sapi_name(), env('APP_NAME'), gethostname()), [
111+
$client->request('POST', '', [
112112
'headers' => [
113113
'Content-Type' => 'application/json',
114114
],

tests/CreateDataDogLoggerTest.php

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
<?php
22

3+
namespace Myli\Testing;
4+
35
use Monolog\Handler\MissingExtensionException;
46
use Myli\DatadogLogger\CreateDataDogLogger;
57
use Myli\DatadogLogger\DataDogHandler;

tests/DataDogFormatterTest.php

Lines changed: 26 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,11 @@
11
<?php
22

3+
namespace Myli\Testing;
4+
35
use Illuminate\Support\Carbon;
6+
use Monolog\Handler\StreamHandler;
7+
use Monolog\Logger;
8+
use Myli\DatadogLogger\DataDogFormatter;
49

510

611
/**
@@ -12,6 +17,7 @@
1217
*/
1318
class DataDogFormatterTest extends \PHPUnit\Framework\TestCase
1419
{
20+
use \phpmock\phpunit\PHPMock;
1521

1622
/**
1723
* @dataProvider recordProvider
@@ -23,13 +29,31 @@ class DataDogFormatterTest extends \PHPUnit\Framework\TestCase
2329
*/
2430
public function testFormatRecord(array $inputRecord, string $expectedRecord)
2531
{
32+
$time = $this->getFunctionMock('\Myli\DatadogLogger', "gethostname");
33+
$time->expects($this->any())->willReturn('foohostname');
2634
$dataDogFormatter = new \Myli\DatadogLogger\DataDogFormatter();
2735

2836
$record = $dataDogFormatter->format($inputRecord);
2937

3038
self::assertEquals($expectedRecord, $record);
3139
}
3240

41+
/**
42+
* Test Invoke DataDogFormatter
43+
*
44+
* @return void
45+
* @throws \Exception
46+
*/
47+
public function testInvoke()
48+
{
49+
$loggerMock = $this->createMock(Logger::class);
50+
$streamHandler = new StreamHandler('foourl');
51+
$loggerMock->method('getHandlers')->willReturn([$streamHandler]);
52+
$dataDogFormatter = new \Myli\DatadogLogger\DataDogFormatter();
53+
$dataDogFormatter->__invoke($loggerMock);
54+
self::assertEquals(DataDogFormatter::class, get_class($streamHandler->getFormatter()));
55+
}
56+
3357
public function recordProvider()
3458
{
3559
return [
@@ -43,7 +67,7 @@ public function recordProvider()
4367
"datetime" => new Carbon('2019-08-14 09:58:10.764107', 'UTC'),
4468
"extra" => []
4569
],
46-
'{"message":"test","context":[],"level":200,"level_name":"INFO","channel":null,"datetime":"2019-08-14T09:58:10.764107Z","extra":[],"published_date":"2019-08-14T09:58:10+0000","status":"INFO"}' . PHP_EOL
70+
'{"message":"test","context":[],"level":200,"level_name":"INFO","channel":null,"datetime":"2019-08-14T09:58:10.764107Z","extra":[],"published_date":"2019-08-14T09:58:10+0000","status":"INFO","ddsource":"php-cli","service":"laravel-datadog-logger","hostname":"foohostname"}' . PHP_EOL
4771
],
4872
[
4973
[
@@ -57,7 +81,7 @@ public function recordProvider()
5781
"datetime" => new Carbon('2019-08-14 09:58:10.764107', 'UTC'),
5882
"extra" => []
5983
],
60-
'{"message":"test","context":{"toto":"tata"},"level":100,"level_name":"DEBUG","channel":null,"datetime":"2019-08-14T09:58:10.764107Z","extra":[],"published_date":"2019-08-14T09:58:10+0000","status":"DEBUG"}' . PHP_EOL
84+
'{"message":"test","context":{"toto":"tata"},"level":100,"level_name":"DEBUG","channel":null,"datetime":"2019-08-14T09:58:10.764107Z","extra":[],"published_date":"2019-08-14T09:58:10+0000","status":"DEBUG","ddsource":"php-cli","service":"laravel-datadog-logger","hostname":"foohostname"}' . PHP_EOL
6185
]
6286
];
6387

0 commit comments

Comments
 (0)