/framework/vendor/swift/lib/classes/Swift/Plugins/LoggerPlugin.php

http://zoop.googlecode.com/ · PHP · 160 lines · 65 code · 16 blank · 79 comment · 0 complexity · 0d82480281a06040fe46cdb7aeb04443 MD5 · raw file

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