error handler: do not log last query, truncate error message to a smaller length

This commit is contained in:
Andrew Dolgov 2016-02-17 16:42:13 +03:00
parent 1003f71e04
commit cc43e19b44
4 changed files with 10 additions and 10 deletions

View file

@ -24,10 +24,6 @@ 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);

View file

@ -35,10 +35,6 @@ 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) {

View file

@ -33,14 +33,13 @@ function format_backtrace($trace) {
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]";
$context = format_backtrace(debug_backtrace()); $context = format_backtrace(debug_backtrace());
$errstr = truncate_middle($errstr, 16384, " (...) ");
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);

View file

@ -878,6 +878,15 @@
} }
} }
// is not utf8 clean
function truncate_middle($str, $max_len, $suffix = '…') {
if (strlen($str) > $max_len) {
return substr_replace($str, $suffix, $max_len / 2, mb_strlen($str) - $max_len);
} else {
return $str;
}
}
function convert_timestamp($timestamp, $source_tz, $dest_tz) { function convert_timestamp($timestamp, $source_tz, $dest_tz) {
try { try {