diff --git a/CHANGELOG.md b/CHANGELOG.md index 09ad17e..60f2e8c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,7 +4,7 @@ Yii Framework 2 swiftmailer extension Change Log 2.0.7 under development ----------------------- -- no changes in this release. +- Enh #37: `yii\swiftmailer\Logger` now chooses logging level depending on incoming entry format (klimov-paul) 2.0.6 September 09, 2016 diff --git a/Logger.php b/Logger.php index d0c0e05..c404822 100644 --- a/Logger.php +++ b/Logger.php @@ -37,7 +37,25 @@ class Logger implements \Swift_Plugins_Logger */ public function add($entry) { - Yii::info($entry, __METHOD__); + $categoryPrefix = substr($entry, 0, 2); + switch ($categoryPrefix) { + case '++': + $level = \yii\log\Logger::LEVEL_TRACE; + break; + case '>>': + case '<<': + $level = \yii\log\Logger::LEVEL_INFO; + break; + case '!!': + $level = \yii\log\Logger::LEVEL_WARNING; + break; + } + + if (!isset($level)) { + $level = \yii\log\Logger::LEVEL_INFO; + } + + Yii::getLogger()->log($entry, $level, __METHOD__); } /** diff --git a/tests/LoggerTest.php b/tests/LoggerTest.php new file mode 100644 index 0000000..9a36ddf --- /dev/null +++ b/tests/LoggerTest.php @@ -0,0 +1,70 @@ +messages); + } + + /** + * Data provider for [[testAdd()]] + * @return array test data + */ + public function dataProviderAdd() + { + return [ + [ + '>> command sent', + [ + 'message' => '>> command sent', + 'level' => \yii\log\Logger::LEVEL_INFO, + ] + ], + [ + '<< response received', + [ + 'message' => '<< response received', + 'level' => \yii\log\Logger::LEVEL_INFO, + ] + ], + [ + '++ transport started', + [ + 'message' => '++ transport started', + 'level' => \yii\log\Logger::LEVEL_TRACE, + ] + ], + [ + '!! error message', + [ + 'message' => '!! error message', + 'level' => \yii\log\Logger::LEVEL_WARNING, + ] + ], + ]; + } + + /** + * @dataProvider dataProviderAdd + * + * @param string $entry + * @param array $expectedLogMessage + */ + public function testAdd($entry, array $expectedLogMessage) + { + $logger = new Logger(); + + $logger->add($entry); + + $logMessage = $this->getLastLogMessage(); + + $this->assertEquals($expectedLogMessage['message'], $logMessage[0]); + $this->assertEquals($expectedLogMessage['level'], $logMessage[1]); + } +} \ No newline at end of file diff --git a/tests/MailerTest.php b/tests/MailerTest.php index 13e9509..56cafbe 100644 --- a/tests/MailerTest.php +++ b/tests/MailerTest.php @@ -7,11 +7,6 @@ use yii\swiftmailer\Mailer; Yii::setAlias('@yii/swiftmailer', __DIR__ . '/../../../../extensions/swiftmailer'); -/** - * @group vendor - * @group mail - * @group swiftmailer - */ class MailerTest extends TestCase { public function setUp()