exception.php
来自「一款可以和GOOGLE媲美的开源统计系统,运用AJAX.功能强大. 无色提示:」· PHP 代码 · 共 110 行
PHP
110 行
<?php/** * Piwik - Open source web analytics * * @link http://piwik.org * @license http://www.gnu.org/licenses/gpl-3.0.html Gpl v3 or later * @version $Id: Exception.php 583 2008-07-28 00:37:19Z matt $ * * @package Piwik_Log * @subpackage Piwik_Log_Exception */require_once "Log.php";/** * Class used to log an exception event. * Displays the exception with a user friendly error message, suggests to get support from piwik.org * * @package Piwik_Log * @subpackage Piwik_Log_Exception */class Piwik_Log_Exception extends Piwik_Log{ const ID = 'logger_exception'; function __construct() { $logToFileFilename = self::ID; $logToDatabaseTableName = self::ID; $logToDatabaseColumnMapping = null; $screenFormatter = new Piwik_Log_Formatter_Exception_ScreenFormatter; $fileFormatter = new Piwik_Log_Formatter_FileFormatter; parent::__construct($logToFileFilename, $fileFormatter, $screenFormatter, $logToDatabaseTableName, $logToDatabaseColumnMapping ); } function addWriteToScreen() { parent::addWriteToScreen(); $writerScreen = new Zend_Log_Writer_Stream('php://stderr'); $writerScreen->setFormatter( $this->screenFormatter ); $this->addWriter($writerScreen); } public function log($exception) { $event = array(); $event['errno'] = $exception->getCode(); $event['message'] = $exception->getMessage(); $event['errfile'] = $exception->getFile(); $event['errline'] = $exception->getLine(); $event['backtrace'] = $exception->getTraceAsString(); parent::log($event); }}/** * Format an exception event to be displayed on the screen. * * @package Piwik_Log * @subpackage Piwik_Log_Exception */class Piwik_Log_Formatter_Exception_ScreenFormatter extends Piwik_Log_Formatter_ScreenFormatter{ /** * Formats data into a single line to be written by the writer. * * @param array $event event data * @return string formatted line to write to the log */ public function format($event) { $errno = $event['errno'] ; $errstr = $event['message'] ; $errfile = $event['errfile'] ; $errline = $event['errline'] ; $backtrace = $event['backtrace'] ; $divId = 'div'.$errline.$errno.rand(1,2000); $message = "<b>Uncaught exception</b>: '". $errstr."'"; $message .= "<br><a onclick=\"if(document.getElementById('$divId').style.display=='none') { document.getElementById('$divId').style.display='inline' } else { document.getElementById('$divId').style.display = 'none' }\" href='#'>". "\nMore information</a>". "<div style='display:inline' id='$divId'>". "<br>In <b>$errfile</b> on line <b>$errline</b>". "<br><small>Backtrace:<br><pre>"; $message .= str_replace("\n", "<br>", $backtrace); $message .= "</pre>"; $message .= "</small></div>"; // without javascript it displays the full error message // but with javascript we hide the DIV and onclick we show it $message .= "<script>document.getElementById('$divId').style.display='none';</script>"; $message .= "<br>You can get help from <a href='misc/redirectToUrl.php?url=http://piwik.org'>Piwik.org</a> (give us the full error message + your PHP and Mysql version)"; return parent::format($message); }}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?