From c7ca9f7e5d9d4248543acaab69434074357f20c2 Mon Sep 17 00:00:00 2001 From: ipsq Date: Mon, 31 Mar 2014 20:15:58 +0200 Subject: [PATCH 01/14] Added a TagProcessor The TagProcessor adds the tags key to the record making it so that it can be used by handlers like Raven. --- src/Monolog/Processor/TagProcessor.php | 37 ++++++++++++++++++++++++++ 1 file changed, 37 insertions(+) create mode 100644 src/Monolog/Processor/TagProcessor.php diff --git a/src/Monolog/Processor/TagProcessor.php b/src/Monolog/Processor/TagProcessor.php new file mode 100644 index 00000000..c1c5253c --- /dev/null +++ b/src/Monolog/Processor/TagProcessor.php @@ -0,0 +1,37 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Monolog\Processor; + +/** + * Adds a tags array into record + * + * @author Martijn Riemers + */ +class TagProcessor +{ + private $tags; + + public function __construct(array $tags = array()) + { + $this->tags = $tags; + } + + public function __invoke(array $record) + { + $record['tags'] = array_merge( + $this->tags, + $record['tags'] + ); + + return $record; + } +} From 1242bed1c95ec36ded9c85f867a088d7735b0671 Mon Sep 17 00:00:00 2001 From: ipsq Date: Mon, 31 Mar 2014 20:22:20 +0200 Subject: [PATCH 02/14] Updated the RavenHandler It can now make use of the tags processor to display tags inside Sentry. It can also include tags that were specified in the context. --- src/Monolog/Handler/RavenHandler.php | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/Monolog/Handler/RavenHandler.php b/src/Monolog/Handler/RavenHandler.php index 98e91691..00bf1238 100644 --- a/src/Monolog/Handler/RavenHandler.php +++ b/src/Monolog/Handler/RavenHandler.php @@ -129,6 +129,13 @@ class RavenHandler extends AbstractProcessingHandler { $options = array(); $options['level'] = $this->logLevels[$record['level']]; + if (!empty($record['tags'])) { + $options['tags'] = $record['tags']; + } + if (!empty($record['context']['tags'])) { + $options['tags'] = array_merge($record['context']['tags'], $options['tags']); + unset($record['context']['tags']); + } if (!empty($record['context'])) { $options['extra']['context'] = $record['context']; } From 34c39ee771c13572fe732faf83c8b011b890569e Mon Sep 17 00:00:00 2001 From: ipsq Date: Mon, 31 Mar 2014 20:23:37 +0200 Subject: [PATCH 03/14] Update TagProcessor.php Array merge was unnecessary since it is not set anywhere else than here. --- src/Monolog/Processor/TagProcessor.php | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/src/Monolog/Processor/TagProcessor.php b/src/Monolog/Processor/TagProcessor.php index c1c5253c..8222ef44 100644 --- a/src/Monolog/Processor/TagProcessor.php +++ b/src/Monolog/Processor/TagProcessor.php @@ -27,10 +27,7 @@ class TagProcessor public function __invoke(array $record) { - $record['tags'] = array_merge( - $this->tags, - $record['tags'] - ); + $record['tags'] = $this->tags; return $record; } From 5c10c2c395723be94a2e88936295d4eacf17f938 Mon Sep 17 00:00:00 2001 From: ipsq Date: Mon, 31 Mar 2014 20:31:17 +0200 Subject: [PATCH 04/14] Create TagProcessorTest.php --- tests/Monolog/Processor/TagProcessorTest.php | 27 ++++++++++++++++++++ 1 file changed, 27 insertions(+) create mode 100644 tests/Monolog/Processor/TagProcessorTest.php diff --git a/tests/Monolog/Processor/TagProcessorTest.php b/tests/Monolog/Processor/TagProcessorTest.php new file mode 100644 index 00000000..8b822827 --- /dev/null +++ b/tests/Monolog/Processor/TagProcessorTest.php @@ -0,0 +1,27 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Monolog\Processor; + +use Monolog\TestCase; + +class TagProcessorTest extends TestCase +{ + /** + * @covers Monolog\Processor\TagProcessor::__invoke + */ + public function testProcessor() + { + $processor = new TagProcessor(); + $record = $processor($this->getRecord()); + $this->assertArrayHasKey('tags', $record); + } +} From ef0a44f8e0e4e004d9dce325c11f610cfaaf4fba Mon Sep 17 00:00:00 2001 From: ipsq Date: Mon, 31 Mar 2014 20:40:02 +0200 Subject: [PATCH 05/14] Added a test for Tags --- tests/Monolog/Handler/RavenHandlerTest.php | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/tests/Monolog/Handler/RavenHandlerTest.php b/tests/Monolog/Handler/RavenHandlerTest.php index bde55b17..cb8c1e80 100644 --- a/tests/Monolog/Handler/RavenHandlerTest.php +++ b/tests/Monolog/Handler/RavenHandlerTest.php @@ -72,6 +72,18 @@ class RavenHandlerTest extends TestCase $this->assertEquals($ravenClient::WARNING, $ravenClient->lastData['level']); $this->assertContains($record['message'], $ravenClient->lastData['message']); } + + public function testTag() + { + $ravenClient = $this->getRavenClient(); + $handler = $this->getHandler($ravenClient); + + $tags = array('tags' => array(1, 2, 'foo')); + $record = $this->getRecord(Logger::INFO, "test", $tags); + $handler->handle($record); + + $this->assertEquals($record['tags'], $tags); + } public function testException() { From a89698b0e2aec7cec946a0271e3d23d5ed4bbc62 Mon Sep 17 00:00:00 2001 From: ipsq Date: Mon, 31 Mar 2014 20:45:14 +0200 Subject: [PATCH 06/14] Update RavenHandlerTest.php --- tests/Monolog/Handler/RavenHandlerTest.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/Monolog/Handler/RavenHandlerTest.php b/tests/Monolog/Handler/RavenHandlerTest.php index cb8c1e80..b33e77c3 100644 --- a/tests/Monolog/Handler/RavenHandlerTest.php +++ b/tests/Monolog/Handler/RavenHandlerTest.php @@ -82,7 +82,7 @@ class RavenHandlerTest extends TestCase $record = $this->getRecord(Logger::INFO, "test", $tags); $handler->handle($record); - $this->assertEquals($record['tags'], $tags); + $this->assertEquals($tags, $ravenClient->lastData['tags']); } public function testException() From 54bbb329b687324b31cdbfb16536cd0e64d0f07f Mon Sep 17 00:00:00 2001 From: ipsq Date: Mon, 31 Mar 2014 20:58:02 +0200 Subject: [PATCH 07/14] Update RavenHandlerTest.php --- tests/Monolog/Handler/RavenHandlerTest.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/Monolog/Handler/RavenHandlerTest.php b/tests/Monolog/Handler/RavenHandlerTest.php index b33e77c3..507ee5f6 100644 --- a/tests/Monolog/Handler/RavenHandlerTest.php +++ b/tests/Monolog/Handler/RavenHandlerTest.php @@ -82,7 +82,7 @@ class RavenHandlerTest extends TestCase $record = $this->getRecord(Logger::INFO, "test", $tags); $handler->handle($record); - $this->assertEquals($tags, $ravenClient->lastData['tags']); + $this->assertContains($tags, $ravenClient->lastData); } public function testException() From bc8525c87cba567e46977185d73555b73d1822e5 Mon Sep 17 00:00:00 2001 From: ipsq Date: Mon, 31 Mar 2014 21:08:32 +0200 Subject: [PATCH 08/14] Fixing the Undefined index error --- src/Monolog/Handler/RavenHandler.php | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/Monolog/Handler/RavenHandler.php b/src/Monolog/Handler/RavenHandler.php index 00bf1238..e4d19b0e 100644 --- a/src/Monolog/Handler/RavenHandler.php +++ b/src/Monolog/Handler/RavenHandler.php @@ -129,11 +129,12 @@ class RavenHandler extends AbstractProcessingHandler { $options = array(); $options['level'] = $this->logLevels[$record['level']]; + $options['tags'] = array(); if (!empty($record['tags'])) { - $options['tags'] = $record['tags']; + $options['tags'] = array_merge($options['tags'], $record['tags']); } if (!empty($record['context']['tags'])) { - $options['tags'] = array_merge($record['context']['tags'], $options['tags']); + $options['tags'] = array_merge($options['tags'], $record['context']['tags']); unset($record['context']['tags']); } if (!empty($record['context'])) { From 8e0c9fddc4f8fd5ecde870668571c1d2082c32d3 Mon Sep 17 00:00:00 2001 From: ipsq Date: Mon, 31 Mar 2014 21:11:04 +0200 Subject: [PATCH 09/14] Update RavenHandlerTest.php --- tests/Monolog/Handler/RavenHandlerTest.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/Monolog/Handler/RavenHandlerTest.php b/tests/Monolog/Handler/RavenHandlerTest.php index 507ee5f6..b33e77c3 100644 --- a/tests/Monolog/Handler/RavenHandlerTest.php +++ b/tests/Monolog/Handler/RavenHandlerTest.php @@ -82,7 +82,7 @@ class RavenHandlerTest extends TestCase $record = $this->getRecord(Logger::INFO, "test", $tags); $handler->handle($record); - $this->assertContains($tags, $ravenClient->lastData); + $this->assertEquals($tags, $ravenClient->lastData['tags']); } public function testException() From a3e7ed62183f83431e80ef8682fa2656725c8be1 Mon Sep 17 00:00:00 2001 From: ipsq Date: Mon, 31 Mar 2014 21:12:07 +0200 Subject: [PATCH 10/14] Update RavenHandlerTest.php --- tests/Monolog/Handler/RavenHandlerTest.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tests/Monolog/Handler/RavenHandlerTest.php b/tests/Monolog/Handler/RavenHandlerTest.php index b33e77c3..946d4440 100644 --- a/tests/Monolog/Handler/RavenHandlerTest.php +++ b/tests/Monolog/Handler/RavenHandlerTest.php @@ -78,8 +78,8 @@ class RavenHandlerTest extends TestCase $ravenClient = $this->getRavenClient(); $handler = $this->getHandler($ravenClient); - $tags = array('tags' => array(1, 2, 'foo')); - $record = $this->getRecord(Logger::INFO, "test", $tags); + $tags = array(1, 2, 'foo'); + $record = $this->getRecord(Logger::INFO, "test", array('tags' => $tags)); $handler->handle($record); $this->assertEquals($tags, $ravenClient->lastData['tags']); From a3e00db52ffd2edafc975149ea8088f83ad9b8fd Mon Sep 17 00:00:00 2001 From: ipsq Date: Tue, 1 Apr 2014 17:07:22 +0200 Subject: [PATCH 11/14] Update TagProcessor.php --- src/Monolog/Processor/TagProcessor.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Monolog/Processor/TagProcessor.php b/src/Monolog/Processor/TagProcessor.php index 8222ef44..2784cef4 100644 --- a/src/Monolog/Processor/TagProcessor.php +++ b/src/Monolog/Processor/TagProcessor.php @@ -27,7 +27,7 @@ class TagProcessor public function __invoke(array $record) { - $record['tags'] = $this->tags; + $record['extra']['tags'] = $this->tags; return $record; } From 9a7209dd5e06eb4323a03b61d93e45598bb5c23e Mon Sep 17 00:00:00 2001 From: ipsq Date: Tue, 1 Apr 2014 17:07:55 +0200 Subject: [PATCH 12/14] Update RavenHandler.php --- src/Monolog/Handler/RavenHandler.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/Monolog/Handler/RavenHandler.php b/src/Monolog/Handler/RavenHandler.php index e4d19b0e..386e6af0 100644 --- a/src/Monolog/Handler/RavenHandler.php +++ b/src/Monolog/Handler/RavenHandler.php @@ -130,8 +130,8 @@ class RavenHandler extends AbstractProcessingHandler $options = array(); $options['level'] = $this->logLevels[$record['level']]; $options['tags'] = array(); - if (!empty($record['tags'])) { - $options['tags'] = array_merge($options['tags'], $record['tags']); + if (!empty($record['extra']['tags'])) { + $options['tags'] = array_merge($options['tags'], $record['extra']['tags']); } if (!empty($record['context']['tags'])) { $options['tags'] = array_merge($options['tags'], $record['context']['tags']); From 7f4eb35fd6a15abadb2cfac907520f8956afec5d Mon Sep 17 00:00:00 2001 From: ipsq Date: Tue, 1 Apr 2014 17:10:41 +0200 Subject: [PATCH 13/14] Update TagProcessorTest.php --- tests/Monolog/Processor/TagProcessorTest.php | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/tests/Monolog/Processor/TagProcessorTest.php b/tests/Monolog/Processor/TagProcessorTest.php index 8b822827..eef22d7a 100644 --- a/tests/Monolog/Processor/TagProcessorTest.php +++ b/tests/Monolog/Processor/TagProcessorTest.php @@ -20,8 +20,10 @@ class TagProcessorTest extends TestCase */ public function testProcessor() { - $processor = new TagProcessor(); + $tags = array(1, 2, 3); + $processor = new TagProcessor($tags); $record = $processor($this->getRecord()); - $this->assertArrayHasKey('tags', $record); + + $this->assertEquals($tags, $record['extra']['tags']); } } From d79cda40cdd9fd9e633f5579a5b28bc509f3e9ee Mon Sep 17 00:00:00 2001 From: ipsq Date: Tue, 1 Apr 2014 17:13:27 +0200 Subject: [PATCH 14/14] Update RavenHandler.php --- src/Monolog/Handler/RavenHandler.php | 1 + 1 file changed, 1 insertion(+) diff --git a/src/Monolog/Handler/RavenHandler.php b/src/Monolog/Handler/RavenHandler.php index 386e6af0..b8f701ea 100644 --- a/src/Monolog/Handler/RavenHandler.php +++ b/src/Monolog/Handler/RavenHandler.php @@ -132,6 +132,7 @@ class RavenHandler extends AbstractProcessingHandler $options['tags'] = array(); if (!empty($record['extra']['tags'])) { $options['tags'] = array_merge($options['tags'], $record['extra']['tags']); + unset($record['extra']['tags']); } if (!empty($record['context']['tags'])) { $options['tags'] = array_merge($options['tags'], $record['context']['tags']);