LoggerProxy.php 3.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171
  1. <?php
  2. /**
  3. * Copyright © Magento, Inc. All rights reserved.
  4. * See COPYING.txt for license details.
  5. */
  6. namespace Magento\Framework\DB\Logger;
  7. use Magento\Framework\DB\LoggerInterface;
  8. class LoggerProxy implements LoggerInterface
  9. {
  10. /**
  11. * Configuration group name
  12. */
  13. const CONF_GROUP_NAME = 'db_logger';
  14. /**
  15. * Logger alias param name
  16. */
  17. const PARAM_ALIAS = 'output';
  18. /**
  19. * Logger log all param name
  20. */
  21. const PARAM_LOG_ALL = 'log_everything';
  22. /**
  23. * Logger query time param name
  24. */
  25. const PARAM_QUERY_TIME = 'query_time_threshold';
  26. /**
  27. * Logger call stack param name
  28. */
  29. const PARAM_CALL_STACK = 'include_stacktrace';
  30. /**
  31. * File logger alias
  32. */
  33. const LOGGER_ALIAS_FILE = 'file';
  34. /**
  35. * Quiet logger alias
  36. */
  37. const LOGGER_ALIAS_DISABLED = 'disabled';
  38. /**
  39. * @var LoggerInterface
  40. */
  41. private $logger;
  42. /**
  43. * @var FileFactory
  44. */
  45. private $fileFactory;
  46. /**
  47. * @var QuietFactory
  48. */
  49. private $quietFactory;
  50. /**
  51. * @var bool
  52. */
  53. private $loggerAlias;
  54. /**
  55. * @var bool
  56. */
  57. private $logAllQueries;
  58. /**
  59. * @var float
  60. */
  61. private $logQueryTime;
  62. /**
  63. * @var bool
  64. */
  65. private $logCallStack;
  66. /**
  67. * LoggerProxy constructor.
  68. * @param FileFactory $fileFactory
  69. * @param QuietFactory $quietFactory
  70. * @param bool $loggerAlias
  71. * @param bool $logAllQueries
  72. * @param float $logQueryTime
  73. * @param bool $logCallStack
  74. */
  75. public function __construct(
  76. FileFactory $fileFactory,
  77. QuietFactory $quietFactory,
  78. $loggerAlias,
  79. $logAllQueries = true,
  80. $logQueryTime = 0.001,
  81. $logCallStack = true
  82. ) {
  83. $this->fileFactory = $fileFactory;
  84. $this->quietFactory = $quietFactory;
  85. $this->loggerAlias = $loggerAlias;
  86. $this->logAllQueries = $logAllQueries;
  87. $this->logQueryTime = $logQueryTime;
  88. $this->logCallStack = $logCallStack;
  89. }
  90. /**
  91. * Get logger object. Initialize if needed.
  92. * @return LoggerInterface
  93. */
  94. private function getLogger()
  95. {
  96. if ($this->logger === null) {
  97. switch ($this->loggerAlias) {
  98. case self::LOGGER_ALIAS_FILE:
  99. $this->logger = $this->fileFactory->create(
  100. [
  101. 'logAllQueries' => $this->logAllQueries,
  102. 'logQueryTime' => $this->logQueryTime,
  103. 'logCallStack' => $this->logCallStack,
  104. ]
  105. );
  106. break;
  107. default:
  108. $this->logger = $this->quietFactory->create();
  109. break;
  110. }
  111. }
  112. return $this->logger;
  113. }
  114. /**
  115. * Adds log record
  116. *
  117. * @param string $str
  118. * @return void
  119. */
  120. public function log($str)
  121. {
  122. $this->getLogger()->log($str);
  123. }
  124. /**
  125. * @param string $type
  126. * @param string $sql
  127. * @param array $bind
  128. * @param \Zend_Db_Statement_Pdo|null $result
  129. * @return void
  130. */
  131. public function logStats($type, $sql, $bind = [], $result = null)
  132. {
  133. $this->getLogger()->logStats($type, $sql, $bind, $result);
  134. }
  135. /**
  136. * @param \Exception $exception
  137. * @return void
  138. */
  139. public function critical(\Exception $exception)
  140. {
  141. $this->getLogger()->critical($exception);
  142. }
  143. /**
  144. * @return void
  145. */
  146. public function startTimer()
  147. {
  148. $this->getLogger()->startTimer();
  149. }
  150. }