Log.php 1.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182
  1. <?php
  2. namespace Elastica;
  3. use Psr\Log\AbstractLogger;
  4. /**
  5. * Elastica log object.
  6. *
  7. * @author Nicolas Ruflin <spam@ruflin.com>
  8. */
  9. class Log extends AbstractLogger
  10. {
  11. /**
  12. * Log path or true if enabled.
  13. *
  14. * @var string|bool
  15. */
  16. protected $_log;
  17. /**
  18. * Last logged message.
  19. *
  20. * @var string Last logged message
  21. */
  22. protected $_lastMessage;
  23. /**
  24. * Inits log object.
  25. *
  26. * @param string|bool String to set a specific file for logging
  27. */
  28. public function __construct($log = '')
  29. {
  30. $this->setLog($log);
  31. }
  32. /**
  33. * Log a message.
  34. *
  35. * @param mixed $level
  36. * @param string $message
  37. * @param array $context
  38. *
  39. * @return void|null
  40. */
  41. public function log($level, $message, array $context = [])
  42. {
  43. $context['error_message'] = $message;
  44. $this->_lastMessage = JSON::stringify($context);
  45. if (!empty($this->_log) && is_string($this->_log)) {
  46. error_log($this->_lastMessage.PHP_EOL, 3, $this->_log);
  47. } else {
  48. error_log($this->_lastMessage);
  49. }
  50. }
  51. /**
  52. * Enable/disable log or set log path.
  53. *
  54. * @param bool|string $log Enables log or sets log path
  55. *
  56. * @return $this
  57. */
  58. public function setLog($log)
  59. {
  60. $this->_log = $log;
  61. return $this;
  62. }
  63. /**
  64. * Return last logged message.
  65. *
  66. * @return string Last logged message
  67. */
  68. public function getLastMessage()
  69. {
  70. return $this->_lastMessage;
  71. }
  72. }