diff options
-rw-r--r-- | lib/private/DB/QueryBuilder/QueryBuilder.php | 42 |
1 files changed, 25 insertions, 17 deletions
diff --git a/lib/private/DB/QueryBuilder/QueryBuilder.php b/lib/private/DB/QueryBuilder/QueryBuilder.php index c2686f7b4a0..ebd715df1c1 100644 --- a/lib/private/DB/QueryBuilder/QueryBuilder.php +++ b/lib/private/DB/QueryBuilder/QueryBuilder.php @@ -193,25 +193,33 @@ class QueryBuilder implements IQueryBuilder { */ public function execute() { if ($this->systemConfig->getValue('log_query', false)) { - $params = []; - foreach ($this->getParameters() as $placeholder => $value) { - if (is_array($value)) { - $params[] = $placeholder . ' => (\'' . implode('\', \'', $value) . '\')'; + try { + $params = []; + foreach ($this->getParameters() as $placeholder => $value) { + if ($value instanceof \DateTime) { + $params[] = $placeholder . ' => DateTime:\'' . $value->format('c') . '\''; + } elseif (is_array($value)) { + $params[] = $placeholder . ' => (\'' . implode('\', \'', $value) . '\')'; + } else { + $params[] = $placeholder . ' => \'' . $value . '\''; + } + } + if (empty($params)) { + $this->logger->debug('DB QueryBuilder: \'{query}\'', [ + 'query' => $this->getSQL(), + 'app' => 'core', + ]); } else { - $params[] = $placeholder . ' => \'' . $value . '\''; + $this->logger->debug('DB QueryBuilder: \'{query}\' with parameters: {params}', [ + 'query' => $this->getSQL(), + 'params' => implode(', ', $params), + 'app' => 'core', + ]); } - } - if (empty($params)) { - $this->logger->debug('DB QueryBuilder: \'{query}\'', [ - 'query' => $this->getSQL(), - 'app' => 'core', - ]); - } else { - $this->logger->debug('DB QueryBuilder: \'{query}\' with parameters: {params}', [ - 'query' => $this->getSQL(), - 'params' => implode(', ', $params), - 'app' => 'core', - ]); + } catch (\Error $e) { + // likely an error during conversion of $value to string + $this->logger->debug('DB QueryBuilder: error trying to log SQL query'); + $this->logger->logException($e); } } |