|  |  |  | <?php
 | 
					
						
							|  |  |  | /**
 | 
					
						
							|  |  |  |  * @link http://www.yiiframework.com/
 | 
					
						
							|  |  |  |  * @copyright Copyright (c) 2008 Yii Software LLC
 | 
					
						
							|  |  |  |  * @license http://www.yiiframework.com/license/
 | 
					
						
							|  |  |  |  */
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | namespace yii\swiftmailer;
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | use Yii;
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | /**
 | 
					
						
							|  |  |  |  * Logger is a SwiftMailer plugin, which allows passing of the SwiftMailer internal logs to the
 | 
					
						
							|  |  |  |  * Yii logging mechanism. Each native SwiftMailer log message will be converted into Yii 'info' log entry.
 | 
					
						
							|  |  |  |  *
 | 
					
						
							|  |  |  |  * This logger will be automatically created and applied to underlying [[\Swift_Mailer]] instance, if [[Mailer::$enableSwiftMailerLogging]]
 | 
					
						
							|  |  |  |  * is enabled. For example:
 | 
					
						
							|  |  |  |  *
 | 
					
						
							|  |  |  |  * ```php
 | 
					
						
							|  |  |  |  * [
 | 
					
						
							|  |  |  |  *     'components' => [
 | 
					
						
							|  |  |  |  *         'mailer' => [
 | 
					
						
							|  |  |  |  *             'class' => 'yii\swiftmailer\Mailer',
 | 
					
						
							|  |  |  |  *             'enableSwiftMailerLogging' => true,
 | 
					
						
							|  |  |  |  *         ],
 | 
					
						
							|  |  |  |  *      ],
 | 
					
						
							|  |  |  |  *     // ...
 | 
					
						
							|  |  |  |  * ],
 | 
					
						
							|  |  |  |  * ```
 | 
					
						
							|  |  |  |  *
 | 
					
						
							|  |  |  |  *
 | 
					
						
							|  |  |  |  * In order to catch logs written by this class, you need to setup a log route for 'yii\swiftmailer\Logger::add' category.
 | 
					
						
							|  |  |  |  * For example:
 | 
					
						
							|  |  |  |  *
 | 
					
						
							|  |  |  |  * ```php
 | 
					
						
							|  |  |  |  * [
 | 
					
						
							|  |  |  |  *     'components' => [
 | 
					
						
							|  |  |  |  *         'log' => [
 | 
					
						
							|  |  |  |  *             'targets' => [
 | 
					
						
							|  |  |  |  *                 [
 | 
					
						
							|  |  |  |  *                     'class' => 'yii\log\FileTarget',
 | 
					
						
							|  |  |  |  *                     'categories' => ['yii\swiftmailer\Logger::add'],
 | 
					
						
							|  |  |  |  *                 ],
 | 
					
						
							|  |  |  |  *             ],
 | 
					
						
							|  |  |  |  *         ],
 | 
					
						
							|  |  |  |  *         // ...
 | 
					
						
							|  |  |  |  *     ],
 | 
					
						
							|  |  |  |  *     // ...
 | 
					
						
							|  |  |  |  * ],
 | 
					
						
							|  |  |  |  * ```
 | 
					
						
							|  |  |  |  *
 | 
					
						
							|  |  |  |  * @author Paul Klimov <klimov.paul@gmail.com>
 | 
					
						
							|  |  |  |  * @since 2.0.4
 | 
					
						
							|  |  |  |  */
 | 
					
						
							|  |  |  | class Logger implements \Swift_Plugins_Logger
 | 
					
						
							|  |  |  | {
 | 
					
						
							|  |  |  |     /**
 | 
					
						
							|  |  |  |      * @inheritdoc
 | 
					
						
							|  |  |  |      */
 | 
					
						
							|  |  |  |     public function add($entry)
 | 
					
						
							|  |  |  |     {
 | 
					
						
							|  |  |  |         $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;
 | 
					
						
							|  |  |  |             default:
 | 
					
						
							|  |  |  |                 $level = \yii\log\Logger::LEVEL_INFO;
 | 
					
						
							|  |  |  |         }
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         Yii::getLogger()->log($entry, $level, __METHOD__);
 | 
					
						
							|  |  |  |     }
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     /**
 | 
					
						
							|  |  |  |      * @inheritdoc
 | 
					
						
							|  |  |  |      */
 | 
					
						
							|  |  |  |     public function clear()
 | 
					
						
							|  |  |  |     {
 | 
					
						
							|  |  |  |         // do nothing
 | 
					
						
							|  |  |  |     }
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     /**
 | 
					
						
							|  |  |  |      * @inheritdoc
 | 
					
						
							|  |  |  |      */
 | 
					
						
							|  |  |  |     public function dump()
 | 
					
						
							|  |  |  |     {
 | 
					
						
							|  |  |  |         return '';
 | 
					
						
							|  |  |  |     }
 | 
					
						
							|  |  |  | }
 |