<?php require_once 'Zend/Log/Writer/Abstract.php'; /** * Sends an error message to the system log whenever an * error occurs. * * @see SS_Log for more information on using writers * @uses Zend_Log_Writer_Abstract * @package framework * @subpackage dev */ class SS_SysLogWriter extends Zend_Log_Writer_Abstract { /** * @param string $ident Identity of log, defaults to "Silverstripe_log" if null * @param $options Option constants, passed to openlog() * @param $facility Type of program logging the message, passed to openlog() */ public function __construct($ident = null, $options = null, $facility = LOG_LOCAL0) { if(!$ident) $ident = 'SilverStripe_log'; if(!$options) $options = LOG_PID | LOG_PERROR; openlog($ident, $options, $facility); } /** * Close the log when this object is destroyed. */ public function __destruct() { closelog(); } /** * @param $option See {@link __construct} * @return SS_SysLogWriter */ static public function factory($config) { return new SS_SysLogWriter(null, $config); } /** * Write to the system log with the event details. * @param array $event Error details */ public function _write($event) { // If no formatter set up, use default then log the event if(!$this->_formatter) $this->setFormatter(new SS_LogErrorFileFormatter()); syslog($event['priority'], $this->_formatter->format($event)); } }