-new logging class
-don't log errors to stdout -log all errors to /var/log/airtime/zendphp.log
This commit is contained in:
parent
bb5deda09d
commit
5204da4502
|
@ -0,0 +1,109 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
class Airtime_Zend_Log extends Zend_Log
|
||||||
|
{
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @var boolean
|
||||||
|
*/
|
||||||
|
protected $_registeredErrorHandler = false;
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @var array|boolean
|
||||||
|
*/
|
||||||
|
protected $_errorHandlerMap = false;
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @var callback
|
||||||
|
*/
|
||||||
|
protected $_origErrorHandler = null;
|
||||||
|
|
||||||
|
|
||||||
|
public function __construct(Zend_Log_Writer_Abstract $writer = null)
|
||||||
|
{
|
||||||
|
parent::__construct($writer);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Error Handler will convert error into log message, and then call the original error handler
|
||||||
|
*
|
||||||
|
* @link http://www.php.net/manual/en/function.set-error-handler.php Custom error handler
|
||||||
|
* @param int $errno
|
||||||
|
* @param string $errstr
|
||||||
|
* @param string $errfile
|
||||||
|
* @param int $errline
|
||||||
|
* @param array $errcontext
|
||||||
|
* @return boolean
|
||||||
|
*/
|
||||||
|
public function errorHandler($errno, $errstr, $errfile, $errline, $errcontext)
|
||||||
|
{
|
||||||
|
$errorLevel = error_reporting();
|
||||||
|
|
||||||
|
if ($errorLevel && $errno) {
|
||||||
|
if (isset($this->_errorHandlerMap[$errno])) {
|
||||||
|
$priority = $this->_errorHandlerMap[$errno];
|
||||||
|
} else {
|
||||||
|
$priority = Zend_Log::INFO;
|
||||||
|
}
|
||||||
|
$this->log($errstr, $priority, array('errno'=>$errno, 'file'=>$errfile, 'line'=>$errline, 'context'=>$errcontext));
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($this->_origErrorHandler !== null) {
|
||||||
|
return call_user_func($this->_origErrorHandler, $errno, $errstr, $errfile, $errline, $errcontext);
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Register Logging system as an error handler to log php errors
|
||||||
|
* Note: it still calls the original error handler if set_error_handler is able to return it.
|
||||||
|
*
|
||||||
|
* Errors will be mapped as:
|
||||||
|
* E_NOTICE, E_USER_NOTICE => NOTICE
|
||||||
|
* E_WARNING, E_CORE_WARNING, E_USER_WARNING => WARN
|
||||||
|
* E_ERROR, E_USER_ERROR, E_CORE_ERROR, E_RECOVERABLE_ERROR => ERR
|
||||||
|
* E_DEPRECATED, E_STRICT, E_USER_DEPRECATED => DEBUG
|
||||||
|
* (unknown/other) => INFO
|
||||||
|
*
|
||||||
|
* @link http://www.php.net/manual/en/function.set-error-handler.php Custom error handler
|
||||||
|
*
|
||||||
|
* @return Zend_Log
|
||||||
|
*/
|
||||||
|
public function registerErrorHandler()
|
||||||
|
{
|
||||||
|
// Only register once. Avoids loop issues if it gets registered twice.
|
||||||
|
if ($this->_registeredErrorHandler) {
|
||||||
|
return $this;
|
||||||
|
}
|
||||||
|
|
||||||
|
$this->_origErrorHandler = set_error_handler(array($this, 'errorHandler'));
|
||||||
|
|
||||||
|
// Contruct a default map of phpErrors to Zend_Log priorities.
|
||||||
|
// Some of the errors are uncatchable, but are included for completeness
|
||||||
|
$this->_errorHandlerMap = array(
|
||||||
|
E_NOTICE => Zend_Log::NOTICE,
|
||||||
|
E_USER_NOTICE => Zend_Log::NOTICE,
|
||||||
|
E_WARNING => Zend_Log::WARN,
|
||||||
|
E_CORE_WARNING => Zend_Log::WARN,
|
||||||
|
E_USER_WARNING => Zend_Log::WARN,
|
||||||
|
E_ERROR => Zend_Log::ERR,
|
||||||
|
E_USER_ERROR => Zend_Log::ERR,
|
||||||
|
E_CORE_ERROR => Zend_Log::ERR,
|
||||||
|
E_RECOVERABLE_ERROR => Zend_Log::ERR,
|
||||||
|
E_STRICT => Zend_Log::DEBUG,
|
||||||
|
);
|
||||||
|
// PHP 5.3.0+
|
||||||
|
if (defined('E_DEPRECATED')) {
|
||||||
|
$this->_errorHandlerMap['E_DEPRECATED'] = Zend_Log::DEBUG;
|
||||||
|
}
|
||||||
|
if (defined('E_USER_DEPRECATED')) {
|
||||||
|
$this->_errorHandlerMap['E_USER_DEPRECATED'] = Zend_Log::DEBUG;
|
||||||
|
}
|
||||||
|
|
||||||
|
$this->_registeredErrorHandler = true;
|
||||||
|
return $this;
|
||||||
|
}
|
||||||
|
}
|
|
@ -6,10 +6,19 @@ class Logging {
|
||||||
private static $_path;
|
private static $_path;
|
||||||
|
|
||||||
public static function getLogger(){
|
public static function getLogger(){
|
||||||
if (!isset(self::$logger)) {
|
if (!isset(self::$_logger)) {
|
||||||
$writer = new Zend_Log_Writer_Stream(self::$_path);
|
$writer = new Zend_Log_Writer_Stream(self::$_path);
|
||||||
|
|
||||||
|
if (Zend_Version::compareVersion("1.11") > 0){
|
||||||
|
//Running Zend version 1.10 or lower. Need to instantiate our
|
||||||
|
//own Zend Log class with backported code from 1.11.
|
||||||
|
require_once __DIR__."/AirtimeLog.php";
|
||||||
|
self::$_logger = new Airtime_Zend_Log($writer);
|
||||||
|
} else {
|
||||||
self::$_logger = new Zend_Log($writer);
|
self::$_logger = new Zend_Log($writer);
|
||||||
}
|
}
|
||||||
|
self::$_logger->registerErrorHandler();
|
||||||
|
}
|
||||||
return self::$_logger;
|
return self::$_logger;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1,8 +1,8 @@
|
||||||
<?php
|
<?php
|
||||||
|
|
||||||
//error_reporting(E_ALL|E_STRICT);
|
//error_reporting(E_ALL|E_STRICT);
|
||||||
error_reporting(E_ALL);
|
//error_reporting(E_ALL);
|
||||||
ini_set('display_errors', 'on');
|
//ini_set('display_errors', 'on');
|
||||||
|
|
||||||
// Define path to application directory
|
// Define path to application directory
|
||||||
defined('APPLICATION_PATH')
|
defined('APPLICATION_PATH')
|
||||||
|
|
Loading…
Reference in New Issue