Index: library/Zend/Log/Writer/Syslog.php =================================================================== --- library/Zend/Log/Writer/Syslog.php (revision 22465) +++ library/Zend/Log/Writer/Syslog.php (working copy) @@ -84,27 +84,7 @@ * * @var array */ - protected $_validFacilities = array( - LOG_AUTH, - LOG_AUTHPRIV, - LOG_CRON, - LOG_DAEMON, - LOG_KERN, - LOG_LOCAL0, - LOG_LOCAL1, - LOG_LOCAL2, - LOG_LOCAL3, - LOG_LOCAL4, - LOG_LOCAL5, - LOG_LOCAL6, - LOG_LOCAL7, - LOG_LPR, - LOG_MAIL, - LOG_NEWS, - LOG_SYSLOG, - LOG_USER, - LOG_UUCP, - ); + protected $_validFacilities = array(); /** * Class constructor @@ -117,10 +97,16 @@ if (isset($params['application'])) { $this->_application = $params['application']; } + + $runInitializeSyslog = true; if (isset($params['facility'])) { - $this->_facility = $params['facility']; + $this->_facility = $this->setFacility($params['facility']); + $runInitializeSyslog = false; } - $this->_initializeSyslog(); + + if ($runInitializeSyslog) { + $this->_initializeSyslog(); + } } /** @@ -136,10 +122,48 @@ } /** + * Initialize values facilities + * + * @return void + */ + protected function _initializeValidFacilities() + { + if (count($this->_validFacilities) > 0) { + return; + } + + $constants = array( + 'LOG_AUTH', + 'LOG_AUTHPRIV', + 'LOG_CRON', + 'LOG_DAEMON', + 'LOG_KERN', + 'LOG_LOCAL0', + 'LOG_LOCAL1', + 'LOG_LOCAL2', + 'LOG_LOCAL3', + 'LOG_LOCAL4', + 'LOG_LOCAL5', + 'LOG_LOCAL6', + 'LOG_LOCAL7', + 'LOG_LPR', + 'LOG_MAIL', + 'LOG_NEWS', + 'LOG_SYSLOG', + 'LOG_USER', + 'LOG_UUCP' + ); + + foreach ($constants as $constant) { + if (defined($constant)) { + $this->_validFacilities[] = constant($constant); + } + } + } + + /** * Initialize syslog / set application name and facility * - * @param string $application Application name - * @param string $facility Syslog facility * @return void */ protected function _initializeSyslog() @@ -162,6 +186,8 @@ return; } + $this->_initializeValidFacilities(); + if (!in_array($facility, $this->_validFacilities)) { require_once 'Zend/Log/Exception.php'; throw new Zend_Log_Exception('Invalid log facility provided; please see http://php.net/openlog for a list of valid facility values');