Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/matomo-org/matomo.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorrobocoder <anthon.pang@gmail.com>2010-06-27 08:47:40 +0400
committerrobocoder <anthon.pang@gmail.com>2010-06-27 08:47:40 +0400
commit41d0347c1b63667b723682bfa6f0474f55266d1b (patch)
tree0a2f109f6241bbb512032b7c7ffabf9c1be8241f /libs/Zend/Log/Writer
parentd5e8e34ad81b18614a45dfe1edc9922015c73b72 (diff)
fixes #1449
git-svn-id: http://dev.piwik.org/svn/trunk@2386 59fd770c-687e-43c8-a1e3-f5a4ff64c105
Diffstat (limited to 'libs/Zend/Log/Writer')
-rw-r--r--libs/Zend/Log/Writer/Syslog.php83
1 files changed, 74 insertions, 9 deletions
diff --git a/libs/Zend/Log/Writer/Syslog.php b/libs/Zend/Log/Writer/Syslog.php
index 310bcf54ec..d7827c9ce3 100644
--- a/libs/Zend/Log/Writer/Syslog.php
+++ b/libs/Zend/Log/Writer/Syslog.php
@@ -17,7 +17,7 @@
* @subpackage Writer
* @copyright Copyright (c) 2005-2010 Zend Technologies USA Inc. (http://www.zend.com)
* @license http://framework.zend.com/license/new-bsd New BSD License
- * @version $Id: Syslog.php 20096 2010-01-06 02:05:09Z bkarwin $
+ * @version $Id: Syslog.php 22477 2010-06-21 12:15:35Z matthew $
*/
/** Zend_Log_Writer_Abstract */
@@ -75,11 +75,18 @@ class Zend_Log_Writer_Syslog extends Zend_Log_Writer_Abstract
/**
* Facility used by this syslog-writer instance
- * @var string
+ * @var int
*/
protected $_facility = LOG_USER;
/**
+ * _validFacilities
+ *
+ * @var array
+ */
+ protected $_validFacilities = array();
+
+ /**
* Class constructor
*
* @param array $options Array of options; may include "application" and "facility" keys
@@ -90,15 +97,21 @@ class Zend_Log_Writer_Syslog extends Zend_Log_Writer_Abstract
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;
+ }
+
+ if ($runInitializeSyslog) {
+ $this->_initializeSyslog();
}
- $this->_initializeSyslog();
}
-
+
/**
* Create a new instance of Zend_Log_Writer_Syslog
- *
+ *
* @param array|Zend_Config $config
* @return Zend_Log_Writer_Syslog
* @throws Zend_Log_Exception
@@ -109,10 +122,44 @@ class Zend_Log_Writer_Syslog extends Zend_Log_Writer_Abstract
}
/**
+ * Initialize values facilities
+ *
+ * @return void
+ */
+ protected function _initializeValidFacilities()
+ {
+ $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()
@@ -125,14 +172,32 @@ class Zend_Log_Writer_Syslog extends Zend_Log_Writer_Abstract
/**
* Set syslog facility
*
- * @param string $facility Syslog facility
+ * @param int $facility Syslog facility
* @return void
+ * @throws Zend_Log_Exception for invalid log facility
*/
public function setFacility($facility)
{
if ($this->_facility === $facility) {
return;
}
+
+ if (!count($this->_validFacilities)) {
+ $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');
+ }
+
+ if (strstr(strtolower(PHP_OS), 'windows')
+ && ($facility !== LOG_USER)
+ ) {
+ // require_once 'Zend/Log/Exception.php';
+ throw new Zend_Log_Exception('Only LOG_USER is a valid log facility on Windows');
+ }
+
$this->_facility = $facility;
$this->_initializeSyslog();
}