PageRenderTime 43ms CodeModel.GetById 15ms RepoModel.GetById 1ms app.codeStats 0ms

/lib/Elastica/Log.php

https://github.com/philippfrenzel/Elastica
PHP | 110 lines | 50 code | 16 blank | 44 comment | 6 complexity | 185ad28f07b2229ac0d5ab28634e32a3 MD5 | raw file
Possible License(s): Apache-2.0
  1. <?php
  2. /**
  3. * Elastica log object
  4. *
  5. * @category Xodoa
  6. * @package Elastica
  7. * @author Nicolas Ruflin <spam@ruflin.com>
  8. */
  9. class Elastica_Log
  10. {
  11. /**
  12. * Log path or true if enabled
  13. *
  14. * @var string|bool
  15. */
  16. protected $_log = false;
  17. /**
  18. * Last logged message
  19. *
  20. * @var string Last logged message
  21. */
  22. protected $_lastMessage = '';
  23. /**
  24. * Inits log object. Checks if logging is enabled for the given client
  25. *
  26. * @param Elastica_Client $client
  27. */
  28. public function __construct(Elastica_Client $client)
  29. {
  30. $this->setLog($client->getConfig('log'));
  31. }
  32. /**
  33. * Log a message
  34. *
  35. * @param string|Elastica_Request $message
  36. */
  37. public function log($message)
  38. {
  39. if (!$this->_log) {
  40. return;
  41. }
  42. if ($message instanceof Elastica_Request) {
  43. $message = $this->_convertRequest($message);
  44. }
  45. $this->_lastMessage = $message;
  46. if (is_string($this->_log)) {
  47. error_log($message . PHP_EOL, 3, $this->_log);
  48. } else {
  49. error_log($message);
  50. }
  51. }
  52. /**
  53. * Enable/disable log or set log path
  54. *
  55. * @param bool|string $log Enables log or sets log path
  56. * @return Elastica_Log
  57. */
  58. public function setLog($log)
  59. {
  60. $this->_log = $log;
  61. return $this;
  62. }
  63. /**
  64. * Converts a request to a log message
  65. *
  66. * @param Elastica_Request $request
  67. * @return string Request log message
  68. */
  69. protected function _convertRequest(Elastica_Request $request)
  70. {
  71. $message = 'curl -X' . strtoupper($request->getMethod()) . ' ';
  72. $message .= '\'http://' . $request->getClient()->getHost() . ':' . $request->getClient()->getPort() . '/';
  73. $message .= $request->getPath();
  74. $query = $request->getQuery();
  75. if (!empty($query)) {
  76. $message .= '?' . http_build_query($query);
  77. }
  78. $message .= '\'';
  79. $data = $request->getData();
  80. if (!empty($data)) {
  81. $message .= ' -d \'' . json_encode($data) . '\'';
  82. }
  83. return $message;
  84. }
  85. /**
  86. * Return last logged message
  87. *
  88. * @return string Last logged message
  89. */
  90. public function getLastMessage()
  91. {
  92. return $this->_lastMessage;
  93. }
  94. }