diff options
-rw-r--r-- | src/Monolog/Formatter/NormalizerFormatter.php | 14 | ||||
-rw-r--r-- | src/Monolog/Handler/RotatingFileHandler.php | 2 | ||||
-rw-r--r-- | src/Monolog/Handler/SlackHandler.php | 14 | ||||
-rw-r--r-- | tests/Monolog/Formatter/NormalizerFormatterTest.php | 27 | ||||
-rw-r--r-- | tests/Monolog/Handler/SlackHandlerTest.php | 18 |
5 files changed, 70 insertions, 5 deletions
diff --git a/src/Monolog/Formatter/NormalizerFormatter.php b/src/Monolog/Formatter/NormalizerFormatter.php index fcac4a6..d4eb1af 100644 --- a/src/Monolog/Formatter/NormalizerFormatter.php +++ b/src/Monolog/Formatter/NormalizerFormatter.php @@ -132,6 +132,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/src/Monolog/Handler/RotatingFileHandler.php b/src/Monolog/Handler/RotatingFileHandler.php index 39e4393..a4a5ba4 100644 --- a/src/Monolog/Handler/RotatingFileHandler.php +++ b/src/Monolog/Handler/RotatingFileHandler.php @@ -72,7 +72,7 @@ class RotatingFileHandler extends StreamHandler if (!preg_match('{^Y(([/_.-]?m)([/_.-]?d)?)?$}', $dateFormat)) { throw new InvalidArgumentException( '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.' ); diff --git a/src/Monolog/Handler/SlackHandler.php b/src/Monolog/Handler/SlackHandler.php index a5db721..f307389 100644 --- a/src/Monolog/Handler/SlackHandler.php +++ b/src/Monolog/Handler/SlackHandler.php @@ -144,19 +144,25 @@ class SlackHandler extends SocketHandler 'attachments' => [], ]; + if ($this->formatter) { + $message = $this->formatter->format($record); + } else { + $message = $record['message']; + } + if ($this->useAttachment) { $attachment = [ - 'fallback' => $record['message'], + 'fallback' => $message, 'color' => $this->getAttachmentColor($record['level']), 'fields' => [], ]; 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'][] = [ 'title' => 'Level', 'value' => $record['level_name'], @@ -206,7 +212,7 @@ class SlackHandler extends SocketHandler $dataArray['attachments'] = json_encode([$attachment]); } else { - $dataArray['text'] = $record['message']; + $dataArray['text'] = $message; } if ($this->iconEmoji) { diff --git a/tests/Monolog/Formatter/NormalizerFormatterTest.php b/tests/Monolog/Formatter/NormalizerFormatterTest.php index 2b2d7c7..6cb53ef 100644 --- a/tests/Monolog/Formatter/NormalizerFormatterTest.php +++ b/tests/Monolog/Formatter/NormalizerFormatterTest.php @@ -85,6 +85,33 @@ class NormalizerFormatterTest extends \PHPUnit_Framework_TestCase ], $formatted); } + 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( + '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'); diff --git a/tests/Monolog/Handler/SlackHandlerTest.php b/tests/Monolog/Handler/SlackHandlerTest.php index d42c19b..e696ecb 100644 --- a/tests/Monolog/Handler/SlackHandlerTest.php +++ b/tests/Monolog/Handler/SlackHandlerTest.php @@ -13,6 +13,7 @@ namespace Monolog\Handler; use Monolog\Test\TestCase; use Monolog\Logger; +use Monolog\Formatter\LineFormatter; /** * @author Greg Kedzierski <greg@gregkedzierski.com> @@ -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'); |