logger: record last query before logged error

master
Andrew Dolgov 9 years ago
parent fd3e5e8da4
commit 475d762872

@ -24,6 +24,10 @@ class Db_Mysqli implements IDb {
} }
function query($query, $die_on_error = true) { function query($query, $die_on_error = true) {
global $last_query;
if (strpos($query, "ttrss_error_log") === FALSE) $last_query = $query;
$result = @mysqli_query($this->link, $query); $result = @mysqli_query($this->link, $query);
if (!$result) { if (!$result) {
$error = @mysqli_error($this->link); $error = @mysqli_error($this->link);

@ -35,6 +35,10 @@ class Db_Pgsql implements IDb {
} }
function query($query, $die_on_error = true) { function query($query, $die_on_error = true) {
global $last_query;
if (strpos($query, "ttrss_error_log") === FALSE) $last_query = $query;
$result = @pg_query($this->link, $query); $result = @pg_query($this->link, $query);
if (!$result) { if (!$result) {

@ -1,17 +1,21 @@
<?php <?php
function ttrss_error_handler($errno, $errstr, $file, $line, $context) { function ttrss_error_handler($errno, $errstr, $file, $line, $context) {
global $logger; global $logger;
global $last_query;
if (error_reporting() == 0 || !$errno) return false; if (error_reporting() == 0 || !$errno) return false;
$file = substr(str_replace(dirname(dirname(__FILE__)), "", $file), 1); $file = substr(str_replace(dirname(dirname(__FILE__)), "", $file), 1);
if ($last_query) $errstr .= " [Last query: $last_query]";
if (class_exists("Logger")) if (class_exists("Logger"))
return Logger::get()->log_error($errno, $errstr, $file, $line, $context); return Logger::get()->log_error($errno, $errstr, $file, $line, $context);
} }
function ttrss_fatal_handler() { function ttrss_fatal_handler() {
global $logger; global $logger;
global $last_query;
$error = error_get_last(); $error = error_get_last();
@ -27,6 +31,8 @@ function ttrss_fatal_handler() {
$file = substr(str_replace(dirname(dirname(__FILE__)), "", $file), 1); $file = substr(str_replace(dirname(dirname(__FILE__)), "", $file), 1);
if ($last_query) $errstr .= " [Last query: $last_query]";
if (class_exists("Logger")) if (class_exists("Logger"))
return Logger::get()->log_error($errno, $errstr, $file, $line, $context); return Logger::get()->log_error($errno, $errstr, $file, $line, $context);
} }

Loading…
Cancel
Save