|
TYPO3 API
SVNRelease
|
00001 <?php 00002 00003 /* 00004 * This file is part of SwiftMailer. 00005 * (c) 2004-2009 Chris Corbyn 00006 * 00007 * For the full copyright and license information, please view the LICENSE 00008 * file that was distributed with this source code. 00009 */ 00010 00011 //@require 'Swift/Events/CommandListener.php'; 00012 //@require 'Swift/Events/CommandEvent.php'; 00013 //@require 'Swift/Events/ResponseListener.php'; 00014 //@require 'Swift/Events/ResponseEvent.php'; 00015 //@require 'Swift/Events/TransportChangeListener.php'; 00016 //@require 'Swift/Events/TransportChangeEvent.php'; 00017 //@require 'Swift/Events/TransportExceptionEvent.php'; 00018 //@require 'Swift/Events/TransportExceptionListener.php'; 00019 //@require 'Swift/Events/TransportException.php'; 00020 //@require 'Swift/Plugins/Logger.php'; 00021 00022 /** 00023 * Does real time logging of Transport level information. 00024 * 00025 * @package Swift 00026 * @subpackage Plugins 00027 * 00028 * @author Chris Corbyn 00029 */ 00030 class Swift_Plugins_LoggerPlugin 00031 implements Swift_Events_CommandListener, Swift_Events_ResponseListener, 00032 Swift_Events_TransportChangeListener, Swift_Events_TransportExceptionListener, 00033 Swift_Plugins_Logger 00034 { 00035 00036 /** The logger which is delegated to */ 00037 private $_logger; 00038 00039 /** 00040 * Create a new LoggerPlugin using $logger. 00041 * 00042 * @param Swift_Plugins_Logger $logger 00043 */ 00044 public function __construct(Swift_Plugins_Logger $logger) 00045 { 00046 $this->_logger = $logger; 00047 } 00048 00049 /** 00050 * Add a log entry. 00051 * 00052 * @param string $entry 00053 */ 00054 public function add($entry) 00055 { 00056 $this->_logger->add($entry); 00057 } 00058 00059 /** 00060 * Clear the log contents. 00061 */ 00062 public function clear() 00063 { 00064 $this->_logger->clear(); 00065 } 00066 00067 /** 00068 * Get this log as a string. 00069 * 00070 * @return string 00071 */ 00072 public function dump() 00073 { 00074 return $this->_logger->dump(); 00075 } 00076 00077 /** 00078 * Invoked immediately following a command being sent. 00079 * 00080 * @param Swift_Events_ResponseEvent $evt 00081 */ 00082 public function commandSent(Swift_Events_CommandEvent $evt) 00083 { 00084 $command = $evt->getCommand(); 00085 $this->_logger->add(sprintf(">> %s", $command)); 00086 } 00087 00088 /** 00089 * Invoked immediately following a response coming back. 00090 * 00091 * @param Swift_Events_ResponseEvent $evt 00092 */ 00093 public function responseReceived(Swift_Events_ResponseEvent $evt) 00094 { 00095 $response = $evt->getResponse(); 00096 $this->_logger->add(sprintf("<< %s", $response)); 00097 } 00098 00099 /** 00100 * Invoked just before a Transport is started. 00101 * 00102 * @param Swift_Events_TransportChangeEvent $evt 00103 */ 00104 public function beforeTransportStarted(Swift_Events_TransportChangeEvent $evt) 00105 { 00106 $transportName = get_class($evt->getSource()); 00107 $this->_logger->add(sprintf("++ Starting %s", $transportName)); 00108 } 00109 00110 /** 00111 * Invoked immediately after the Transport is started. 00112 * 00113 * @param Swift_Events_TransportChangeEvent $evt 00114 */ 00115 public function transportStarted(Swift_Events_TransportChangeEvent $evt) 00116 { 00117 $transportName = get_class($evt->getSource()); 00118 $this->_logger->add(sprintf("++ %s started", $transportName)); 00119 } 00120 00121 /** 00122 * Invoked just before a Transport is stopped. 00123 * 00124 * @param Swift_Events_TransportChangeEvent $evt 00125 */ 00126 public function beforeTransportStopped(Swift_Events_TransportChangeEvent $evt) 00127 { 00128 $transportName = get_class($evt->getSource()); 00129 $this->_logger->add(sprintf("++ Stopping %s", $transportName)); 00130 } 00131 00132 /** 00133 * Invoked immediately after the Transport is stopped. 00134 * 00135 * @param Swift_Events_TransportChangeEvent $evt 00136 */ 00137 public function transportStopped(Swift_Events_TransportChangeEvent $evt) 00138 { 00139 $transportName = get_class($evt->getSource()); 00140 $this->_logger->add(sprintf("++ %s stopped", $transportName)); 00141 } 00142 00143 /** 00144 * Invoked as a TransportException is thrown in the Transport system. 00145 * 00146 * @param Swift_Events_TransportExceptionEvent $evt 00147 */ 00148 public function exceptionThrown(Swift_Events_TransportExceptionEvent $evt) 00149 { 00150 $e = $evt->getException(); 00151 $message = $e->getMessage(); 00152 $this->_logger->add(sprintf("!! %s", $message)); 00153 $message .= PHP_EOL; 00154 $message .= 'Log data:' . PHP_EOL; 00155 $message .= $this->_logger->dump(); 00156 $evt->cancelBubble(); 00157 throw new Swift_TransportException($message); 00158 } 00159 00160 }
1.8.0