diff options
author | Andrew Dolgov <[email protected]> | 2013-04-16 19:41:31 +0400 |
---|---|---|
committer | Andrew Dolgov <[email protected]> | 2013-04-16 19:41:31 +0400 |
commit | 889a5f9f195309df5842f142986b3166212d8a58 (patch) | |
tree | ddefb4fe997bb9625856e56196e4b9e84592e742 /include/errorhandler.php | |
parent | 4f032700dbfbbfa35798e05497c8a868eb73476f (diff) |
experimental SQL-based error logger
Diffstat (limited to 'include/errorhandler.php')
-rw-r--r-- | include/errorhandler.php | 50 |
1 files changed, 50 insertions, 0 deletions
diff --git a/include/errorhandler.php b/include/errorhandler.php new file mode 100644 index 000000000..13eed0e30 --- /dev/null +++ b/include/errorhandler.php @@ -0,0 +1,50 @@ +<?php +// TODO: make configurable +require_once "classes/logger.php"; +require_once "classes/logger/sql.php"; + +function ttrss_error_handler($errno, $errstr, $file, $line, $context) { + global $logger; + + if (!$logger) $logger = new Logger_SQL(); + + $errfile = str_replace(dirname(dirname(__FILE__)), "", $errfile); + + if ($logger) { + return $logger->log_error($errno, $errstr, $file, $line, $context); + } + + return false; +} + +function ttrss_fatal_handler() { + global $logger; + + $file = "UNKNOWN FILE"; + $errstr = "UNKNOWN"; + $errno = E_CORE_ERROR; + $line = -1; + + $error = error_get_last(); + + if ($error !== NULL) { + $errno = $error["type"]; + $file = $error["file"]; + $line = $error["line"]; + $errstr = $error["message"]; + + $context = debug_backtrace(); + + $file = str_replace(dirname(dirname(__FILE__)) . "/", "", $file); + + if (!$logger) $logger = new Logger_SQL(); + + if ($logger) { + $logger->log_error($errno, $errstr, $file, $line, $context); + } + } +} + +register_shutdown_function('ttrss_fatal_handler'); +set_error_handler('ttrss_error_handler'); +?> |