Skip to content

Commit a54ac53

Browse files
authored
Merge pull request #19 from hedii/pr/18
Pr/18
2 parents 824432e + 66ce8ea commit a54ac53

File tree

3 files changed

+122
-4
lines changed

3 files changed

+122
-4
lines changed

readme.md renamed to README.md

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -87,6 +87,14 @@ return [
8787
// \Monolog\Formatter\GelfMessageFormatter::DEFAULT_MAX_LENGTH is
8888
// used (currently this value is 32766)
8989
'max_length' => null,
90+
91+
// This optional option determines the prefix for 'context' fields
92+
// from the Monolog record. Default is null (no context prefix)
93+
'context_prefix' => null,
94+
95+
// This optional option determines the prefix for 'extra' fields
96+
// from the Monolog record. Default is null (no extra prefix)
97+
'extra_prefix' => null,
9098
],
9199
],
92100
];

src/GelfLoggerFactory.php

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -68,10 +68,10 @@ public function __invoke(array $config): Logger
6868

6969
$handler->setFormatter(
7070
new GelfMessageFormatter(
71-
$systemName = $config['system_name'] ?? null,
72-
$extraPrefix = null,
73-
$contextPrefix = '',
74-
$maxLength = $config['max_length'] ?? null
71+
$config['system_name'] ?? null,
72+
$config['extra_prefix'] ?? null,
73+
$config['context_prefix'] ?? '',
74+
$config['max_length'] ?? null
7575
)
7676
);
7777

tests/GelfMessageTest.php

Lines changed: 110 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,110 @@
1+
<?php
2+
3+
namespace Hedii\LaravelGelfLogger\Tests;
4+
5+
use Hedii\LaravelGelfLogger\GelfLoggerFactory;
6+
use Illuminate\Support\Facades\Log;
7+
use Orchestra\Testbench\TestCase as Orchestra;
8+
9+
class GelfMessageTest extends Orchestra
10+
{
11+
public function messagePrefixProvider(): array
12+
{
13+
return [
14+
'Add context and extra prefix' => [
15+
'parameters' => [
16+
'context_prefix' => 'ctxt_',
17+
'context_variable' => 'id',
18+
'extra_prefix' => 'extra_',
19+
'extra_variable' => 'ip'
20+
],
21+
'expected_response' => [
22+
'context_response' => 'ctxt_id',
23+
'extra_response' => 'extra_ip'
24+
]
25+
],
26+
'Empty context and extra config values' => [
27+
'parameters' => [
28+
'context_variable' => 'id',
29+
'extra_variable' => 'ip'
30+
],
31+
'expected_response' => [
32+
'context_response' => 'id',
33+
'extra_response' => 'ip'
34+
]
35+
],
36+
'Empty extra config value' => [
37+
'parameters' => [
38+
'context_prefix' => 'ctxt_',
39+
'context_variable' => 'id',
40+
'extra_variable' => 'ip'
41+
],
42+
'expected_response' => [
43+
'context_response' => 'ctxt_id',
44+
'extra_response' => 'ip'
45+
]
46+
],
47+
'Empty context config value' => [
48+
'parameters' => [
49+
'context_variable' => 'id',
50+
'extra_variable' => 'ip',
51+
'extra_prefix' => 'extra_'
52+
],
53+
'expected_response' => [
54+
'context_response' => 'id',
55+
'extra_response' => 'extra_ip'
56+
]
57+
],
58+
'Null context and extra config values' => [
59+
'parameters' => [
60+
'context_prefix' => null,
61+
'context_variable' => 'id',
62+
'extra_prefix' => null,
63+
'extra_variable' => 'ip'
64+
],
65+
'expected_response' => [
66+
'context_response' => 'id',
67+
'extra_response' => 'ip'
68+
]
69+
],
70+
];
71+
}
72+
73+
/**
74+
* @test
75+
* @dataProvider messagePrefixProvider
76+
* @param array $parameters
77+
* @param array $expectedResponse
78+
*/
79+
public function it_should_append_prefixes_to_gelf_message_variables(array $parameters, array $expectedResponse): void
80+
{
81+
$loggerConfig = [
82+
'system_name' => 'my-system-namex',
83+
'driver' => 'custom',
84+
'via' => GelfLoggerFactory::class,
85+
];
86+
87+
if (isset($parameters['context_prefix'])) {
88+
$loggerConfig['context_prefix'] = $parameters['context_prefix'];
89+
}
90+
91+
if (isset($parameters['extra_prefix'])) {
92+
$loggerConfig['extra_prefix'] = $parameters['extra_prefix'];
93+
}
94+
95+
$this->app['config']->set('logging.channels.gelf', $loggerConfig);
96+
97+
$logger = Log::channel('gelf');
98+
99+
$formattedMessage = $logger->getHandlers()[0]->getFormatter()->format([
100+
'datetime' => '1591097093.0',
101+
'message' => 'test',
102+
'level' => 100,
103+
'extra' => [$parameters['extra_variable'] => '127.0.0.1'],
104+
'context' => [$parameters['context_variable'] => '777']
105+
]);
106+
107+
$this->assertArrayHasKey($expectedResponse['extra_response'], $formattedMessage->getAllAdditionals());
108+
$this->assertArrayHasKey($expectedResponse['context_response'], $formattedMessage->getAllAdditionals());
109+
}
110+
}

0 commit comments

Comments
 (0)