Skip to content

Commit f48cd53

Browse files
authored
Merge pull request #13 from aivis/master
format message field
2 parents 74e291d + 2e20a8c commit f48cd53

File tree

3 files changed

+126
-3
lines changed

3 files changed

+126
-3
lines changed

src/Understand/UnderstandLaravel5/Logger.php

Lines changed: 31 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -79,7 +79,15 @@ public function bulkLog(array $events, array $additional = [])
7979
protected function prepare($log, array $additional = [])
8080
{
8181
// integer, float, string or boolean as message
82-
$log = is_scalar($log) ? ['message' => $log] : $log;
82+
if (is_scalar($log))
83+
{
84+
$log = ['message' => $log];
85+
}
86+
87+
if (isset($log['message']))
88+
{
89+
$log['message'] = $this->formatMessage($log['message']);
90+
}
8391

8492
// resolve additonal properties from field providers
8593
$data = $this->fieldProvider->resolveValues($additional);
@@ -93,6 +101,28 @@ protected function prepare($log, array $additional = [])
93101

94102
return $event;
95103
}
104+
105+
/**
106+
* Format message field
107+
*
108+
* @param string $message
109+
* @return string
110+
*/
111+
protected function formatMessage($message)
112+
{
113+
if ( ! is_bool($message))
114+
{
115+
return (string)$message;
116+
}
117+
118+
// cast boolean values to "1" or "0" strings
119+
if ($message)
120+
{
121+
return '1';
122+
}
123+
124+
return '0';
125+
}
96126

97127
/**
98128
* Set handler

src/Understand/UnderstandLaravel5/UnderstandLaravel5ServiceProvider.php

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -251,6 +251,8 @@ protected function listenLaravelEvents()
251251
*/
252252
protected function handleEvent($level, $message, $context)
253253
{
254+
$log = [];
255+
254256
if ($message instanceof Exceptions\HandlerException)
255257
{
256258
return;
@@ -260,14 +262,15 @@ protected function handleEvent($level, $message, $context)
260262
$log = $this->app['understand.exception-encoder']->exceptionToArray($message);
261263
$log['tags'] = ['exception_log'];
262264
}
263-
else if (is_string($message))
265+
// // integer, float, string or boolean as message
266+
else if (is_scalar($message))
264267
{
265268
$log['message'] = $message;
266269
$log['tags'] = ['laravel_log'];
267270
}
268271
else
269272
{
270-
$log = $message;
273+
$log = (array)$message;
271274
$log['tags'] = ['laravel_log'];
272275
}
273276

tests/EventListenerTest.php

Lines changed: 90 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -122,4 +122,94 @@ public function testTokenProviderValue()
122122
$this->assertNotEmpty($token2);
123123
$this->assertSame($token2, $token);
124124
}
125+
126+
/**
127+
* @return void
128+
*/
129+
public function testLoggerMessageInteger()
130+
{
131+
$called = 0;
132+
$message = 123;
133+
$messageSame = false;
134+
$laravelLogTag = false;
135+
136+
$callback = function($data) use(&$called, &$messageSame, &$laravelLogTag, $message)
137+
{
138+
$called++;
139+
$decoded = json_decode($data, true);
140+
141+
$messageSame = (string)$message === $decoded['message'];
142+
$laravelLogTag = in_array('exception_log', $decoded['tags'], true);
143+
};
144+
145+
$fieldProvider = $this->app['understand.field-provider'];
146+
$handler = new CallbackHandler($callback);
147+
148+
$this->app['understand.logger'] = new Logger($fieldProvider, $handler, false);
149+
150+
$this->app['Psr\Log\LoggerInterface']->error($message);
151+
152+
$this->assertSame($called, 1);
153+
$this->assertTrue($messageSame);
154+
}
155+
156+
/**
157+
* @return void
158+
*/
159+
public function testLoggerMessageBoolean()
160+
{
161+
$called = 0;
162+
$messageSame = false;
163+
$laravelLogTag = false;
164+
165+
$callback = function($data) use(&$called, &$messageSame, &$laravelLogTag)
166+
{
167+
$called++;
168+
$decoded = json_decode($data, true);
169+
170+
// `false` should be casted to `0`
171+
$messageSame = '0' === $decoded['message'];
172+
$laravelLogTag = in_array('exception_log', $decoded['tags'], true);
173+
};
174+
175+
$fieldProvider = $this->app['understand.field-provider'];
176+
$handler = new CallbackHandler($callback);
177+
178+
$this->app['understand.logger'] = new Logger($fieldProvider, $handler, false);
179+
180+
$this->app['Psr\Log\LoggerInterface']->error(false);
181+
182+
$this->assertSame($called, 1);
183+
$this->assertTrue($messageSame);
184+
}
185+
186+
/**
187+
* @return void
188+
*/
189+
public function testLoggerMessageObject()
190+
{
191+
$called = 0;
192+
$object = new \Illuminate\Support\Fluent(['test' => 123]);
193+
$messageSame = false;
194+
$laravelLogTag = false;
195+
196+
$callback = function($data) use(&$called, &$messageSame, &$laravelLogTag, $object)
197+
{
198+
$called++;
199+
$decoded = json_decode($data, true);
200+
201+
$messageSame = $object->toJson() === $decoded['message'];
202+
$laravelLogTag = in_array('exception_log', $decoded['tags'], true);
203+
};
204+
205+
$fieldProvider = $this->app['understand.field-provider'];
206+
$handler = new CallbackHandler($callback);
207+
208+
$this->app['understand.logger'] = new Logger($fieldProvider, $handler, false);
209+
210+
$this->app['Psr\Log\LoggerInterface']->error($object);
211+
212+
$this->assertSame($called, 1);
213+
$this->assertTrue($messageSame);
214+
}
125215
}

0 commit comments

Comments
 (0)