I tend to use a singleton pattern-based Logger class and then typically call a static logMessage() method directly.
Alternatively, calling the static instance() method returns the Logger, providing additional flexibility (e.g., customise setEventItem() calls on Zend_Log object).
Zend_Registry is being used to hold some values set during initialization of the application.
<?phpclass Logger{private static $instance;private $logger;public static function instance(){if(!self::$instance){self::$instance = new self();$formatter = new Zend_Log_Formatter_Xml();$filter = new Zend_Log_Filter_Priority(Zend_Registry::get('logFilterLevel'));$writer = new Zend_Log_Writer_Stream(Zend_Registry::get('logFileLocation'));$writer->setFormatter($formatter);$writer->addFilter($filter);self::$instance->logger = new Zend_Log($writer);}return self::$instance;}public static function logMessage($message=null, $priorityLevel=null, Exception $exception){$logger = self::instance()->logger;$logger->setEventItem('exceptionCode', $exception->getCode());$logger->setEventItem('file', $exception->getFile());$logger->setEventItem('line', $exception->getLine());$logger->setEventItem('exceptionMessage', $exception->getMessage());$logger->setEventItem('exceptionTrace', serialize($exception->getTrace()));$logger->setEventItem('exceptionTraceAsString', $exception->getTraceAsString());$logger->log($message, $priorityLevel);}}?>
No comments:
Post a Comment