123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100 |
- <?php
- /**
- * Copyright © Magento, Inc. All rights reserved.
- * See COPYING.txt for license details.
- */
- namespace Magento\Framework\DB\Logger;
- use Magento\Framework\DB\LoggerInterface;
- use Magento\Framework\Debug;
- abstract class LoggerAbstract implements LoggerInterface
- {
- /**
- * @var int
- */
- private $timer;
- /**
- * @var bool
- */
- private $logAllQueries;
- /**
- * @var float
- */
- private $logQueryTime;
- /**
- * @var bool
- */
- private $logCallStack;
- /**
- * @param bool $logAllQueries
- * @param float $logQueryTime
- * @param bool $logCallStack
- */
- public function __construct($logAllQueries = false, $logQueryTime = 0.05, $logCallStack = false)
- {
- $this->logAllQueries = $logAllQueries;
- $this->logQueryTime = $logQueryTime;
- $this->logCallStack = $logCallStack;
- }
- /**
- * {@inheritdoc}
- */
- public function startTimer()
- {
- $this->timer = microtime(true);
- }
- /**
- * Get formatted statistics message
- *
- * @param string $type Type of query
- * @param string $sql
- * @param array $bind
- * @param \Zend_Db_Statement_Pdo|null $result
- * @return string
- * @throws \Zend_Db_Statement_Exception
- */
- public function getStats($type, $sql, $bind = [], $result = null)
- {
- $message = '## ' . getmypid() . ' ## ';
- $nl = "\n";
- $time = sprintf('%.4f', microtime(true) - $this->timer);
- if (!$this->logAllQueries && $time < $this->logQueryTime) {
- return '';
- }
- switch ($type) {
- case self::TYPE_CONNECT:
- $message .= 'CONNECT' . $nl;
- break;
- case self::TYPE_TRANSACTION:
- $message .= 'TRANSACTION ' . $sql . $nl;
- break;
- case self::TYPE_QUERY:
- $message .= 'QUERY' . $nl;
- $message .= 'SQL: ' . $sql . $nl;
- if ($bind) {
- $message .= 'BIND: ' . var_export($bind, true) . $nl;
- }
- if ($result instanceof \Zend_Db_Statement_Pdo) {
- $message .= 'AFF: ' . $result->rowCount() . $nl;
- }
- break;
- }
- $message .= 'TIME: ' . $time . $nl;
- if ($this->logCallStack) {
- $message .= 'TRACE: ' . Debug::backtrace(true, false) . $nl;
- }
- $message .= $nl;
- return $message;
- }
- }
|