From 8b1f52220647227d4c52717a738dc741ce0d3599 Mon Sep 17 00:00:00 2001 From: Francis Besset Date: Wed, 20 Jul 2016 15:18:11 +0200 Subject: [PATCH 1/3] Added informations to normalize a SoapFault --- src/Monolog/Formatter/NormalizerFormatter.php | 14 +++++++++++ .../Formatter/NormalizerFormatterTest.php | 23 +++++++++++++++++++ 2 files changed, 37 insertions(+) diff --git a/src/Monolog/Formatter/NormalizerFormatter.php b/src/Monolog/Formatter/NormalizerFormatter.php index 9a4d5d25..ab79dbcd 100644 --- a/src/Monolog/Formatter/NormalizerFormatter.php +++ b/src/Monolog/Formatter/NormalizerFormatter.php @@ -127,6 +127,20 @@ class NormalizerFormatter implements FormatterInterface 'file' => $e->getFile().':'.$e->getLine(), ); + if ($e instanceof \SoapFault) { + if (isset($e->faultcode)) { + $data['faultcode'] = $e->faultcode; + } + + if (isset($e->faultactor)) { + $data['faultactor'] = $e->faultactor; + } + + if (isset($e->detail)) { + $data['detail'] = $e->detail; + } + } + $trace = $e->getTrace(); foreach ($trace as $frame) { if (isset($frame['file'])) { diff --git a/tests/Monolog/Formatter/NormalizerFormatterTest.php b/tests/Monolog/Formatter/NormalizerFormatterTest.php index 83adb7e2..a0d2f595 100644 --- a/tests/Monolog/Formatter/NormalizerFormatterTest.php +++ b/tests/Monolog/Formatter/NormalizerFormatterTest.php @@ -85,6 +85,29 @@ class NormalizerFormatterTest extends \PHPUnit_Framework_TestCase ), $formatted); } + public function testFormatSoapFaultException() + { + $formatter = new NormalizerFormatter('Y-m-d'); + $e = new \SoapFault('foo', 'bar', 'hello', 'world'); + $formatted = $formatter->format(array( + 'exception' => $e, + )); + + unset($formatted['exception']['trace']); + + $this->assertEquals(array( + 'exception' => array( + 'class' => 'SoapFault', + 'message' => 'bar', + 'code' => 0, + 'file' => $e->getFile().':'.$e->getLine(), + 'faultcode' => 'foo', + 'faultactor' => 'hello', + 'detail' => 'world', + ), + ), $formatted); + } + public function testFormatToStringExceptionHandle() { $formatter = new NormalizerFormatter('Y-m-d'); From 9b5bf2cca70857f9e6816c856eead508fa81cc29 Mon Sep 17 00:00:00 2001 From: Jordi Boggiano Date: Fri, 29 Jul 2016 04:20:18 +0200 Subject: [PATCH 2/3] Allow formatting of message by setting a line formatter on SlackHandler, fixes #829 --- src/Monolog/Handler/SlackHandler.php | 14 ++++++++++---- tests/Monolog/Handler/SlackHandlerTest.php | 18 ++++++++++++++++++ 2 files changed, 28 insertions(+), 4 deletions(-) diff --git a/src/Monolog/Handler/SlackHandler.php b/src/Monolog/Handler/SlackHandler.php index ac2af023..3de2576a 100644 --- a/src/Monolog/Handler/SlackHandler.php +++ b/src/Monolog/Handler/SlackHandler.php @@ -144,19 +144,25 @@ class SlackHandler extends SocketHandler 'attachments' => array(), ); + if ($this->formatter) { + $message = $this->formatter->format($record); + } else { + $message = $record['message']; + } + if ($this->useAttachment) { $attachment = array( - 'fallback' => $record['message'], + 'fallback' => $message, 'color' => $this->getAttachmentColor($record['level']), 'fields' => array(), ); if ($this->useShortAttachment) { $attachment['title'] = $record['level_name']; - $attachment['text'] = $record['message']; + $attachment['text'] = $message; } else { $attachment['title'] = 'Message'; - $attachment['text'] = $record['message']; + $attachment['text'] = $message; $attachment['fields'][] = array( 'title' => 'Level', 'value' => $record['level_name'], @@ -206,7 +212,7 @@ class SlackHandler extends SocketHandler $dataArray['attachments'] = json_encode(array($attachment)); } else { - $dataArray['text'] = $record['message']; + $dataArray['text'] = $message; } if ($this->iconEmoji) { diff --git a/tests/Monolog/Handler/SlackHandlerTest.php b/tests/Monolog/Handler/SlackHandlerTest.php index d657fae3..a1fd8721 100644 --- a/tests/Monolog/Handler/SlackHandlerTest.php +++ b/tests/Monolog/Handler/SlackHandlerTest.php @@ -13,6 +13,7 @@ namespace Monolog\Handler; use Monolog\TestCase; use Monolog\Logger; +use Monolog\Formatter\LineFormatter; /** * @author Greg Kedzierski @@ -57,6 +58,23 @@ class SlackHandlerTest extends TestCase $this->assertRegexp('/token=myToken&channel=channel1&username=Monolog&text=&attachments=.*$/', $content); } + public function testWriteContentUsesFormatterIfProvided() + { + $this->createHandler('myToken', 'channel1', 'Monolog', false); + $this->handler->handle($this->getRecord(Logger::CRITICAL, 'test1')); + fseek($this->res, 0); + $content = fread($this->res, 1024); + + $this->createHandler('myToken', 'channel1', 'Monolog', false); + $this->handler->setFormatter(new LineFormatter('foo--%message%')); + $this->handler->handle($this->getRecord(Logger::CRITICAL, 'test2')); + fseek($this->res, 0); + $content2 = fread($this->res, 1024); + + $this->assertRegexp('/token=myToken&channel=channel1&username=Monolog&text=test1.*$/', $content); + $this->assertRegexp('/token=myToken&channel=channel1&username=Monolog&text=foo--test2.*$/', $content2); + } + public function testWriteContentWithEmoji() { $this->createHandler('myToken', 'channel1', 'Monolog', true, 'alien'); From ced92841236ac0cd3677579002916dd343647166 Mon Sep 17 00:00:00 2001 From: Jordi Boggiano Date: Fri, 29 Jul 2016 04:51:33 +0200 Subject: [PATCH 3/3] Fix tests --- src/Monolog/Handler/RotatingFileHandler.php | 2 +- tests/Monolog/Formatter/NormalizerFormatterTest.php | 4 ++++ tests/Monolog/Handler/RotatingFileHandlerTest.php | 6 +++--- 3 files changed, 8 insertions(+), 4 deletions(-) diff --git a/src/Monolog/Handler/RotatingFileHandler.php b/src/Monolog/Handler/RotatingFileHandler.php index 101c1dc8..3b60b3d1 100644 --- a/src/Monolog/Handler/RotatingFileHandler.php +++ b/src/Monolog/Handler/RotatingFileHandler.php @@ -71,7 +71,7 @@ class RotatingFileHandler extends StreamHandler if (!preg_match('{^Y(([/_.-]?m)([/_.-]?d)?)?$}', $dateFormat)) { trigger_error( 'Invalid date format - format must be one of '. - 'RotatingFileHandler::FILE_PER_DAY ("Y-m-d"), RotatingFileHandler::FILE_PER_MONTH ("Y-m")'. + 'RotatingFileHandler::FILE_PER_DAY ("Y-m-d"), RotatingFileHandler::FILE_PER_MONTH ("Y-m") '. 'or RotatingFileHandler::FILE_PER_YEAR ("Y"), or you can set one of the '. 'date formats using slashes, underscores and/or dots instead of dashes.', E_USER_DEPRECATED diff --git a/tests/Monolog/Formatter/NormalizerFormatterTest.php b/tests/Monolog/Formatter/NormalizerFormatterTest.php index a0d2f595..ea752b4a 100644 --- a/tests/Monolog/Formatter/NormalizerFormatterTest.php +++ b/tests/Monolog/Formatter/NormalizerFormatterTest.php @@ -87,6 +87,10 @@ class NormalizerFormatterTest extends \PHPUnit_Framework_TestCase public function testFormatSoapFaultException() { + if (!class_exists('SoapFault')) { + $this->markTestSkipped('Requires the soap extension'); + } + $formatter = new NormalizerFormatter('Y-m-d'); $e = new \SoapFault('foo', 'bar', 'hello', 'world'); $formatted = $formatter->format(array( diff --git a/tests/Monolog/Handler/RotatingFileHandlerTest.php b/tests/Monolog/Handler/RotatingFileHandlerTest.php index 96e6dff4..c5106175 100644 --- a/tests/Monolog/Handler/RotatingFileHandlerTest.php +++ b/tests/Monolog/Handler/RotatingFileHandlerTest.php @@ -145,9 +145,9 @@ class RotatingFileHandlerTest extends TestCase if (!$valid) { $this->assertErrorWasTriggered( E_USER_DEPRECATED, - 'Invalid date format - format should be one of '. - 'RotatingFileHandler::FILE_PER_DAY, RotatingFileHandler::FILE_PER_MONTH '. - 'or RotatingFileHandler::FILE_PER_YEAR.' + 'Invalid date format - format must be one of RotatingFileHandler::FILE_PER_DAY ("Y-m-d"), '. + 'RotatingFileHandler::FILE_PER_MONTH ("Y-m") or RotatingFileHandler::FILE_PER_YEAR ("Y"), '. + 'or you can set one of the date formats using slashes, underscores and/or dots instead of dashes.' ); } }