From a2b77b2750605e7d1095471afc70523a735d41ae Mon Sep 17 00:00:00 2001 From: Matthias Pigulla Date: Tue, 8 Oct 2013 14:31:56 +0200 Subject: [PATCH 1/4] Add Apache mod_unique_id's identifier in WebProcessor mod_unique_id can add a unique ID to every request and also add it to other logfiles. This makes it easy to correlate lines from different logs belonging to the same request. http://httpd.apache.org/docs/2.2/mod/mod_unique_id.html --- src/Monolog/Processor/WebProcessor.php | 1 + 1 file changed, 1 insertion(+) diff --git a/src/Monolog/Processor/WebProcessor.php b/src/Monolog/Processor/WebProcessor.php index 9916cc08..0524aa11 100644 --- a/src/Monolog/Processor/WebProcessor.php +++ b/src/Monolog/Processor/WebProcessor.php @@ -54,6 +54,7 @@ class WebProcessor 'http_method' => isset($this->serverData['REQUEST_METHOD']) ? $this->serverData['REQUEST_METHOD'] : null, 'server' => isset($this->serverData['SERVER_NAME']) ? $this->serverData['SERVER_NAME'] : null, 'referrer' => isset($this->serverData['HTTP_REFERER']) ? $this->serverData['HTTP_REFERER'] : null, + 'unique_id' => isset($this->serverData['UNIQUE_ID']) ? $this->serverData['UNIQUE_ID'] : null, ) ); From 7c0edceadc9817727cbfb37bac3f28d05ed99186 Mon Sep 17 00:00:00 2001 From: Matthias Pigulla Date: Wed, 9 Oct 2013 00:26:02 +0200 Subject: [PATCH 2/4] Update WebProcessorTest.php --- tests/Monolog/Processor/WebProcessorTest.php | 2 ++ 1 file changed, 2 insertions(+) diff --git a/tests/Monolog/Processor/WebProcessorTest.php b/tests/Monolog/Processor/WebProcessorTest.php index 04a54221..0fea9b1d 100644 --- a/tests/Monolog/Processor/WebProcessorTest.php +++ b/tests/Monolog/Processor/WebProcessorTest.php @@ -23,6 +23,7 @@ class WebProcessorTest extends TestCase 'REQUEST_METHOD' => 'C', 'HTTP_REFERER' => 'D', 'SERVER_NAME' => 'F', + 'UNIQUE_ID' => 'G', ); $processor = new WebProcessor($server); @@ -32,6 +33,7 @@ class WebProcessorTest extends TestCase $this->assertEquals($server['REQUEST_METHOD'], $record['extra']['http_method']); $this->assertEquals($server['HTTP_REFERER'], $record['extra']['referrer']); $this->assertEquals($server['SERVER_NAME'], $record['extra']['server']); + $this->assertEquals($server['UNIQUE_ID'], $record['extra']['unique_id']); } public function testProcessorDoNothingIfNoRequestUri() From 16f05a17e33b95bd896e886cc70bb37b150132d2 Mon Sep 17 00:00:00 2001 From: Matthias Pigulla Date: Wed, 9 Oct 2013 00:26:59 +0200 Subject: [PATCH 3/4] Update AbstractProcessingHandlerTest.php --- tests/Monolog/Handler/AbstractProcessingHandlerTest.php | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/tests/Monolog/Handler/AbstractProcessingHandlerTest.php b/tests/Monolog/Handler/AbstractProcessingHandlerTest.php index 3485bdf3..96871d3e 100644 --- a/tests/Monolog/Handler/AbstractProcessingHandlerTest.php +++ b/tests/Monolog/Handler/AbstractProcessingHandlerTest.php @@ -65,6 +65,7 @@ class AbstractProcessingHandlerTest extends TestCase 'REQUEST_METHOD' => '', 'REMOTE_ADDR' => '', 'SERVER_NAME' => '', + 'UNIQUE_ID' => '', ))); $handledRecord = null; $handler->expects($this->once()) @@ -74,6 +75,6 @@ class AbstractProcessingHandlerTest extends TestCase })) ; $handler->handle($this->getRecord()); - $this->assertEquals(5, count($handledRecord['extra'])); + $this->assertEquals(6, count($handledRecord['extra'])); } } From 540afb4621f30ecafbe4714ce1886f0493d25bd4 Mon Sep 17 00:00:00 2001 From: Matthias Pigulla Date: Thu, 10 Oct 2013 10:04:29 +0200 Subject: [PATCH 4/4] Add unique_id to extra data only if present in the server environment --- src/Monolog/Processor/WebProcessor.php | 5 ++++- tests/Monolog/Processor/WebProcessorTest.php | 13 +++++++++++++ 2 files changed, 17 insertions(+), 1 deletion(-) diff --git a/src/Monolog/Processor/WebProcessor.php b/src/Monolog/Processor/WebProcessor.php index 0524aa11..4c2bc191 100644 --- a/src/Monolog/Processor/WebProcessor.php +++ b/src/Monolog/Processor/WebProcessor.php @@ -54,10 +54,13 @@ class WebProcessor 'http_method' => isset($this->serverData['REQUEST_METHOD']) ? $this->serverData['REQUEST_METHOD'] : null, 'server' => isset($this->serverData['SERVER_NAME']) ? $this->serverData['SERVER_NAME'] : null, 'referrer' => isset($this->serverData['HTTP_REFERER']) ? $this->serverData['HTTP_REFERER'] : null, - 'unique_id' => isset($this->serverData['UNIQUE_ID']) ? $this->serverData['UNIQUE_ID'] : null, ) ); + if (isset($this->serverData['UNIQUE_ID'])) { + $record['extra']['unique_id'] = $this->serverData['UNIQUE_ID']; + } + return $record; } } diff --git a/tests/Monolog/Processor/WebProcessorTest.php b/tests/Monolog/Processor/WebProcessorTest.php index 0fea9b1d..df29fdd6 100644 --- a/tests/Monolog/Processor/WebProcessorTest.php +++ b/tests/Monolog/Processor/WebProcessorTest.php @@ -60,6 +60,19 @@ class WebProcessorTest extends TestCase $this->assertNull($record['extra']['referrer']); } + public function testProcessorDoesNotAddUniqueIdIfNotPresent() + { + $server = array( + 'REQUEST_URI' => 'A', + 'REMOTE_ADDR' => 'B', + 'REQUEST_METHOD' => 'C', + 'SERVER_NAME' => 'F', + ); + $processor = new WebProcessor($server); + $record = $processor($this->getRecord()); + $this->assertFalse(isset($record['extra']['unique_id'])); + } + /** * @expectedException UnexpectedValueException */