vendor/swiftmailer/lib/classes/Swift/Plugins/LoggerPlugin.php
changeset 0 7f95f8617b0b
equal deleted inserted replaced
-1:000000000000 0:7f95f8617b0b
       
     1 <?php
       
     2 
       
     3 /*
       
     4  * This file is part of SwiftMailer.
       
     5  * (c) 2004-2009 Chris Corbyn
       
     6  *
       
     7  * For the full copyright and license information, please view the LICENSE
       
     8  * file that was distributed with this source code.
       
     9  */
       
    10 
       
    11 
       
    12 /**
       
    13  * Does real time logging of Transport level information.
       
    14  * 
       
    15  * @package Swift
       
    16  * @subpackage Plugins
       
    17  * 
       
    18  * @author Chris Corbyn
       
    19  */
       
    20 class Swift_Plugins_LoggerPlugin
       
    21   implements Swift_Events_CommandListener, Swift_Events_ResponseListener,
       
    22   Swift_Events_TransportChangeListener, Swift_Events_TransportExceptionListener,
       
    23   Swift_Plugins_Logger
       
    24 {
       
    25   
       
    26   /** The logger which is delegated to */
       
    27   private $_logger;
       
    28   
       
    29   /**
       
    30    * Create a new LoggerPlugin using $logger.
       
    31    * 
       
    32    * @param Swift_Plugins_Logger $logger
       
    33    */
       
    34   public function __construct(Swift_Plugins_Logger $logger)
       
    35   {
       
    36     $this->_logger = $logger;
       
    37   }
       
    38   
       
    39   /**
       
    40    * Add a log entry.
       
    41    * 
       
    42    * @param string $entry
       
    43    */
       
    44   public function add($entry)
       
    45   {
       
    46     $this->_logger->add($entry);
       
    47   }
       
    48   
       
    49   /**
       
    50    * Clear the log contents.
       
    51    */
       
    52   public function clear()
       
    53   {
       
    54     $this->_logger->clear();
       
    55   }
       
    56   
       
    57   /**
       
    58    * Get this log as a string.
       
    59    * 
       
    60    * @return string
       
    61    */
       
    62   public function dump()
       
    63   {
       
    64     return $this->_logger->dump();
       
    65   }
       
    66   
       
    67   /**
       
    68    * Invoked immediately following a command being sent.
       
    69    * 
       
    70    * @param Swift_Events_ResponseEvent $evt
       
    71    */
       
    72   public function commandSent(Swift_Events_CommandEvent $evt)
       
    73   {
       
    74     $command = $evt->getCommand();
       
    75     $this->_logger->add(sprintf(">> %s", $command));
       
    76   }
       
    77   
       
    78   /**
       
    79    * Invoked immediately following a response coming back.
       
    80    * 
       
    81    * @param Swift_Events_ResponseEvent $evt
       
    82    */
       
    83   public function responseReceived(Swift_Events_ResponseEvent $evt)
       
    84   {
       
    85     $response = $evt->getResponse();
       
    86     $this->_logger->add(sprintf("<< %s", $response));
       
    87   }
       
    88   
       
    89   /**
       
    90    * Invoked just before a Transport is started.
       
    91    * 
       
    92    * @param Swift_Events_TransportChangeEvent $evt
       
    93    */
       
    94   public function beforeTransportStarted(Swift_Events_TransportChangeEvent $evt)
       
    95   {
       
    96     $transportName = get_class($evt->getSource());
       
    97     $this->_logger->add(sprintf("++ Starting %s", $transportName));
       
    98   }
       
    99   
       
   100   /**
       
   101    * Invoked immediately after the Transport is started.
       
   102    * 
       
   103    * @param Swift_Events_TransportChangeEvent $evt
       
   104    */
       
   105   public function transportStarted(Swift_Events_TransportChangeEvent $evt)
       
   106   {
       
   107     $transportName = get_class($evt->getSource());
       
   108     $this->_logger->add(sprintf("++ %s started", $transportName));
       
   109   }
       
   110   
       
   111   /**
       
   112    * Invoked just before a Transport is stopped.
       
   113    * 
       
   114    * @param Swift_Events_TransportChangeEvent $evt
       
   115    */
       
   116   public function beforeTransportStopped(Swift_Events_TransportChangeEvent $evt)
       
   117   {
       
   118     $transportName = get_class($evt->getSource());
       
   119     $this->_logger->add(sprintf("++ Stopping %s", $transportName));
       
   120   }
       
   121   
       
   122   /**
       
   123    * Invoked immediately after the Transport is stopped.
       
   124    * 
       
   125    * @param Swift_Events_TransportChangeEvent $evt
       
   126    */
       
   127   public function transportStopped(Swift_Events_TransportChangeEvent $evt)
       
   128   {
       
   129     $transportName = get_class($evt->getSource());
       
   130     $this->_logger->add(sprintf("++ %s stopped", $transportName));
       
   131   }
       
   132   
       
   133   /**
       
   134    * Invoked as a TransportException is thrown in the Transport system.
       
   135    * 
       
   136    * @param Swift_Events_TransportExceptionEvent $evt
       
   137    */
       
   138   public function exceptionThrown(Swift_Events_TransportExceptionEvent $evt)
       
   139   {
       
   140     $e = $evt->getException();
       
   141     $message = $e->getMessage();
       
   142     $this->_logger->add(sprintf("!! %s", $message));
       
   143     $message .= PHP_EOL;
       
   144     $message .= 'Log data:' . PHP_EOL;
       
   145     $message .= $this->_logger->dump();
       
   146     $evt->cancelBubble();
       
   147     throw new Swift_TransportException($message);
       
   148   }
       
   149   
       
   150 }