X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=index.php;h=997ee6197f27a1b55e222dc932def5f24a4dbd79;hb=aadb4f20935fcf781771726397abd64b0157bf3e;hp=b1e4f651e4872b1dbf8961a1064c3424fc29972a;hpb=d9cde0ef80ee838a99035d44f0286b3cc902e332;p=quix0rs-gnu-social.git diff --git a/index.php b/index.php index b1e4f651e4..997ee6197f 100644 --- a/index.php +++ b/index.php @@ -68,7 +68,6 @@ function getPath($req) */ function handleError($error) { -//error_log(print_r($error,1)); if ($error->getCode() == DB_DATAOBJECT_ERROR_NODATA) { return; } @@ -77,11 +76,16 @@ function handleError($error) if (common_config('site', 'logdebug')) { $logmsg .= " : ". $error->getDebugInfo(); } + // DB queries often end up with a lot of newlines; merge to a single line + // for easier grepability... + $logmsg = str_replace("\n", " ", $logmsg); common_log(LOG_ERR, $logmsg); + + // @fixme backtrace output should be consistent with exception handling if (common_config('site', 'logdebug')) { $bt = $error->getBacktrace(); - foreach ($bt as $line) { - common_log(LOG_ERR, $line); + foreach ($bt as $n => $line) { + common_log(LOG_ERR, formatBacktraceLine($n, $line)); } } if ($error instanceof DB_DataObject_Error @@ -110,6 +114,38 @@ function handleError($error) exit(-1); } +/** + * Format a backtrace line for debug output roughly like debug_print_backtrace() does. + * Exceptions already have this built in, but PEAR error objects just give us the array. + * + * @param int $n line number + * @param array $line per-frame array item from debug_backtrace() + * @return string + */ +function formatBacktraceLine($n, $line) +{ + $out = "#$n "; + if (isset($line['class'])) $out .= $line['class']; + if (isset($line['type'])) $out .= $line['type']; + if (isset($line['function'])) $out .= $line['function']; + $out .= '('; + if (isset($line['args'])) { + $args = array(); + foreach ($line['args'] as $arg) { + // debug_print_backtrace seems to use var_export + // but this gets *very* verbose! + $args[] = gettype($arg); + } + $out .= implode(',', $args); + } + $out .= ')'; + $out .= ' called at ['; + if (isset($line['file'])) $out .= $line['file']; + if (isset($line['line'])) $out .= ':' . $line['line']; + $out .= ']'; + return $out; +} + function checkMirror($action_obj, $args) { global $config;