Skip to content
Extraits de code Groupes Projets
ExceptionHandler.php 1,96 ko
Newer Older
  • Learn to ignore specific revisions
  •  * Piwik - free/libre analytics platform
    
    robocoder's avatar
    robocoder a validé
     * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
    
    namespace Piwik;
    
    use Piwik\API\ResponseBuilder;
    
    mattab's avatar
    mattab a validé
    use Piwik\Plugin;
    
    Benaka Moorthi's avatar
    Benaka Moorthi a validé
     * Contains Piwik's uncaught exception handler and log file formatting for exception
     * instances.
    
    class ExceptionHandler
    
    Benaka Moorthi's avatar
    Benaka Moorthi a validé
         * The backtrace string to use when testing.
    
    Benaka Moorthi's avatar
    Benaka Moorthi a validé
         * @var string
    
         */
        public static $debugBacktraceForTests = null;
    
    
        public static function setUp()
        {
    
            Piwik::addAction('Log.formatFileMessage', array('\\Piwik\\ExceptionHandler', 'formatFileAndDBLogMessage'));
            Piwik::addAction('Log.formatDatabaseMessage', array('\\Piwik\\ExceptionHandler', 'formatFileAndDBLogMessage'));
            Piwik::addAction('Log.formatScreenMessage', array('\\Piwik\\ExceptionHandler', 'formatScreenMessage'));
    
            set_exception_handler(array('\\Piwik\\ExceptionHandler', 'logException'));
    
        public static function formatFileAndDBLogMessage(&$message, $level, $tag, $datetime, $log)
    
        {
            if ($message instanceof \Exception) {
                $message = sprintf("%s(%d): %s\n%s", $message->getFile(), $message->getLine(), $message->getMessage(),
    
                    self::$debugBacktraceForTests ? : $message->getTraceAsString());
    
                $message = $log->formatMessage($level, $tag, $datetime, $message);
    
        public static function formatScreenMessage(&$message, $level, $tag, $datetime, $log)
    
        {
            if ($message instanceof \Exception) {
    
                Common::sendHeader('Content-Type: text/html; charset=utf-8');
    
                $outputFormat = strtolower(Common::getRequestVar('format', 'html', 'string'));
                $response = new ResponseBuilder($outputFormat);
                $message = $response->getResponseException(new \Exception($message->getMessage()));
            }
        }
    
        public static function logException(\Exception $exception)
    
    Benaka Moorthi's avatar
    Benaka Moorthi a validé
            Log::error($exception);