| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141 | <?php/* * This file is part of SwiftMailer. * (c) 2004-2009 Chris Corbyn * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. *//** * Does real time logging of Transport level information. * * @author     Chris Corbyn */class Swift_Plugins_LoggerPlugin implements Swift_Events_CommandListener, Swift_Events_ResponseListener, Swift_Events_TransportChangeListener, Swift_Events_TransportExceptionListener, Swift_Plugins_Logger{    /** The logger which is delegated to */    private $_logger;    /**     * Create a new LoggerPlugin using $logger.     *     * @param Swift_Plugins_Logger $logger     */    public function __construct(Swift_Plugins_Logger $logger)    {        $this->_logger = $logger;    }    /**     * Add a log entry.     *     * @param string $entry     */    public function add($entry)    {        $this->_logger->add($entry);    }    /**     * Clear the log contents.     */    public function clear()    {        $this->_logger->clear();    }    /**     * Get this log as a string.     *     * @return string     */    public function dump()    {        return $this->_logger->dump();    }    /**     * Invoked immediately following a command being sent.     *     * @param Swift_Events_CommandEvent $evt     */    public function commandSent(Swift_Events_CommandEvent $evt)    {        $command = $evt->getCommand();        $this->_logger->add(sprintf(">> %s", $command));    }    /**     * Invoked immediately following a response coming back.     *     * @param Swift_Events_ResponseEvent $evt     */    public function responseReceived(Swift_Events_ResponseEvent $evt)    {        $response = $evt->getResponse();        $this->_logger->add(sprintf("<< %s", $response));    }    /**     * Invoked just before a Transport is started.     *     * @param Swift_Events_TransportChangeEvent $evt     */    public function beforeTransportStarted(Swift_Events_TransportChangeEvent $evt)    {        $transportName = get_class($evt->getSource());        $this->_logger->add(sprintf("++ Starting %s", $transportName));    }    /**     * Invoked immediately after the Transport is started.     *     * @param Swift_Events_TransportChangeEvent $evt     */    public function transportStarted(Swift_Events_TransportChangeEvent $evt)    {        $transportName = get_class($evt->getSource());        $this->_logger->add(sprintf("++ %s started", $transportName));    }    /**     * Invoked just before a Transport is stopped.     *     * @param Swift_Events_TransportChangeEvent $evt     */    public function beforeTransportStopped(Swift_Events_TransportChangeEvent $evt)    {        $transportName = get_class($evt->getSource());        $this->_logger->add(sprintf("++ Stopping %s", $transportName));    }    /**     * Invoked immediately after the Transport is stopped.     *     * @param Swift_Events_TransportChangeEvent $evt     */    public function transportStopped(Swift_Events_TransportChangeEvent $evt)    {        $transportName = get_class($evt->getSource());        $this->_logger->add(sprintf("++ %s stopped", $transportName));    }    /**     * Invoked as a TransportException is thrown in the Transport system.     *     * @param Swift_Events_TransportExceptionEvent $evt     */    public function exceptionThrown(Swift_Events_TransportExceptionEvent $evt)    {        $e = $evt->getException();        $message = $e->getMessage();        $this->_logger->add(sprintf("!! %s", $message));        $message .= PHP_EOL;        $message .= 'Log data:' . PHP_EOL;        $message .= $this->_logger->dump();        $evt->cancelBubble();        throw new Swift_TransportException($message);    }}
 |