Code Coverage |
||||||||||
Classes and Traits |
Functions and Methods |
Lines |
||||||||
| Total | |
0.00% |
0 / 1 |
|
88.24% |
15 / 17 |
CRAP | |
95.00% |
57 / 60 |
| LoggerAppenderSyslog | |
0.00% |
0 / 1 |
|
88.24% |
15 / 17 |
26 | |
95.00% |
57 / 60 |
| setIdent($ident) | |
100.00% |
1 / 1 |
1 | |
100.00% |
2 / 2 |
|||
| setPriority($priority) | |
100.00% |
1 / 1 |
1 | |
100.00% |
2 / 2 |
|||
| setFacility($facility) | |
100.00% |
1 / 1 |
1 | |
100.00% |
2 / 2 |
|||
| setOverridePriority($overridePriority) | |
100.00% |
1 / 1 |
1 | |
100.00% |
2 / 2 |
|||
| setOption($option) | |
100.00% |
1 / 1 |
1 | |
100.00% |
2 / 2 |
|||
| getIdent() | |
100.00% |
1 / 1 |
1 | |
100.00% |
1 / 1 |
|||
| getPriority() | |
100.00% |
1 / 1 |
1 | |
100.00% |
1 / 1 |
|||
| getFacility() | |
100.00% |
1 / 1 |
1 | |
100.00% |
1 / 1 |
|||
| getOverridePriority() | |
100.00% |
1 / 1 |
1 | |
100.00% |
1 / 1 |
|||
| getOption() | |
100.00% |
1 / 1 |
1 | |
100.00% |
1 / 1 |
|||
| activateOptions() | |
100.00% |
1 / 1 |
1 | |
100.00% |
5 / 5 |
|||
| close() | |
100.00% |
1 / 1 |
2 | |
100.00% |
5 / 5 |
|||
| append(LoggerLoggingEvent $event) | |
100.00% |
1 / 1 |
1 | |
100.00% |
6 / 6 |
|||
| getSyslogPriority(LoggerLevel $level) | |
100.00% |
1 / 1 |
2 | |
100.00% |
3 / 3 |
|||
| parseOption() | |
100.00% |
1 / 1 |
4 | |
100.00% |
12 / 12 |
|||
| parseFacility() | |
0.00% |
0 / 1 |
3.21 | |
71.43% |
5 / 7 |
|||
| parsePriority() | |
0.00% |
0 / 1 |
3.03 | |
85.71% |
6 / 7 |
|||
| <?php | |
| /** | |
| * Licensed to the Apache Software Foundation (ASF) under one or more | |
| * contributor license agreements. See the NOTICE file distributed with | |
| * this work for additional information regarding copyright ownership. | |
| * The ASF licenses this file to You under the Apache License, Version 2.0 | |
| * (the "License"); you may not use this file except in compliance with | |
| * the License. You may obtain a copy of the License at | |
| * | |
| * http://www.apache.org/licenses/LICENSE-2.0 | |
| * | |
| * Unless required by applicable law or agreed to in writing, software | |
| * distributed under the License is distributed on an "AS IS" BASIS, | |
| * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | |
| * See the License for the specific language governing permissions and | |
| * limitations under the License. | |
| */ | |
| /** | |
| * Log events to a system log using the PHP syslog() function. | |
| * | |
| * This appenders requires a layout. | |
| * | |
| * ## Configurable parameters: ## | |
| * | |
| * - **ident** - The ident of the syslog message. | |
| * - **priority** - The priority for the syslog message (used when overriding | |
| * priority). | |
| * - **facility** - The facility for the syslog message | |
| * - **overridePriority** - If set to true, the message priority will always | |
| * use the value defined in {@link $priority}, otherwise the priority will | |
| * be determined by the message's log level. | |
| * - **option** - The option value for the syslog message. | |
| * | |
| * Recognised syslog options are: | |
| * | |
| * - CONS - if there is an error while sending data to the system logger, write directly to the system console | |
| * - NDELAY - open the connection to the logger immediately | |
| * - ODELAY - delay opening the connection until the first message is logged (default) | |
| * - PERROR - print log message also to standard error | |
| * - PID - include PID with each message | |
| * | |
| * Multiple options can be set by delimiting them with a pipe character, | |
| * e.g.: "CONS|PID|PERROR". | |
| * | |
| * Recognised syslog priorities are: | |
| * | |
| * - EMERG | |
| * - ALERT | |
| * - CRIT | |
| * - ERR | |
| * - WARNING | |
| * - NOTICE | |
| * - INFO | |
| * - DEBUG | |
| * | |
| * Levels are mapped as follows: | |
| * | |
| * - <b>FATAL</b> to LOG_ALERT | |
| * - <b>ERROR</b> to LOG_ERR | |
| * - <b>WARN</b> to LOG_WARNING | |
| * - <b>INFO</b> to LOG_INFO | |
| * - <b>DEBUG</b> to LOG_DEBUG | |
| * - <b>TRACE</b> to LOG_DEBUG | |
| * | |
| * @version $Revision: 1337820 $ | |
| * @package log4php | |
| * @subpackage appenders | |
| * @license http://www.apache.org/licenses/LICENSE-2.0 Apache License, Version 2.0 | |
| * @link http://logging.apache.org/log4php/docs/appenders/syslog.html Appender documentation | |
| */ | |
| class LoggerAppenderSyslog extends LoggerAppender { | |
| /** | |
| * The ident string is added to each message. Typically the name of your application. | |
| * | |
| * @var string | |
| */ | |
| protected $ident = "Apache log4php"; | |
| /** | |
| * The syslog priority to use when overriding priority. This setting is | |
| * required if {@link overridePriority} is set to true. | |
| * | |
| * @var string | |
| */ | |
| protected $priority; | |
| /** | |
| * The option used when opening the syslog connection. | |
| * | |
| * @var string | |
| */ | |
| protected $option = 'PID|CONS'; | |
| /** | |
| * The facility value indicates the source of the message. | |
| * | |
| * @var string | |
| */ | |
| protected $facility = 'USER'; | |
| /** | |
| * If set to true, the message priority will always use the value defined | |
| * in {@link $priority}, otherwise the priority will be determined by the | |
| * message's log level. | |
| * | |
| * @var string | |
| */ | |
| protected $overridePriority = false; | |
| /** | |
| * Holds the int value of the {@link $priority}. | |
| * @var int | |
| */ | |
| private $intPriority; | |
| /** | |
| * Holds the int value of the {@link $facility}. | |
| * @var int | |
| */ | |
| private $intFacility; | |
| /** | |
| * Holds the int value of the {@link $option}. | |
| * @var int | |
| */ | |
| private $intOption; | |
| /** | |
| * Sets the {@link $ident}. | |
| * | |
| * @param string $ident | |
| */ | |
| public function setIdent($ident) { | |
| $this->ident = $ident; | |
| } | |
| /** | |
| * Sets the {@link $priority}. | |
| * | |
| * @param string $priority | |
| */ | |
| public function setPriority($priority) { | |
| $this->priority = $priority; | |
| } | |
| /** | |
| * Sets the {@link $facility}. | |
| * | |
| * @param string $facility | |
| */ | |
| public function setFacility($facility) { | |
| $this->facility = $facility; | |
| } | |
| /** | |
| * Sets the {@link $overridePriority}. | |
| * | |
| * @param string $overridePriority | |
| */ | |
| public function setOverridePriority($overridePriority) { | |
| $this->overridePriority = $overridePriority; | |
| } | |
| /** | |
| * Sets the 'option' parameter. | |
| * | |
| * @param string $option | |
| */ | |
| public function setOption($option) { | |
| $this->option = $option; | |
| } | |
| /** | |
| * Returns the 'ident' parameter. | |
| * | |
| * @return string $ident | |
| */ | |
| public function getIdent() { | |
| return $this->ident; | |
| } | |
| /** | |
| * Returns the 'priority' parameter. | |
| * | |
| * @return string | |
| */ | |
| public function getPriority() { | |
| return $this->priority; | |
| } | |
| /** | |
| * Returns the 'facility' parameter. | |
| * | |
| * @return string | |
| */ | |
| public function getFacility() { | |
| return $this->facility; | |
| } | |
| /** | |
| * Returns the 'overridePriority' parameter. | |
| * | |
| * @return string | |
| */ | |
| public function getOverridePriority() { | |
| return $this->overridePriority; | |
| } | |
| /** | |
| * Returns the 'option' parameter. | |
| * | |
| * @return string | |
| */ | |
| public function getOption() { | |
| return $this->option; | |
| } | |
| public function activateOptions() { | |
| $this->intPriority = $this->parsePriority(); | |
| $this->intOption = $this->parseOption(); | |
| $this->intFacility = $this->parseFacility(); | |
| $this->closed = false; | |
| } | |
| public function close() { | |
| if($this->closed != true) { | |
| closelog(); | |
| $this->closed = true; | |
| } | |
| } | |
| /** | |
| * Appends the event to syslog. | |
| * | |
| * Log is opened and closed each time because if it is not closed, it | |
| * can cause the Apache httpd server to log to whatever ident/facility | |
| * was used in openlog(). | |
| * | |
| * @see http://www.php.net/manual/en/function.syslog.php#97843 | |
| */ | |
| public function append(LoggerLoggingEvent $event) { | |
| $priority = $this->getSyslogPriority($event->getLevel()); | |
| $message = $this->layout->format($event); | |
| openlog($this->ident, $this->intOption, $this->intFacility); | |
| syslog($priority, $message); | |
| closelog(); | |
| } | |
| /** Determines which syslog priority to use based on the given level. */ | |
| private function getSyslogPriority(LoggerLevel $level) { | |
| if($this->overridePriority) { | |
| return $this->intPriority; | |
| } | |
| return $level->getSyslogEquivalent(); | |
| } | |
| /** Parses a syslog option string and returns the correspodning int value. */ | |
| private function parseOption() { | |
| $value = 0; | |
| $options = explode('|', $this->option); | |
| foreach($options as $option) { | |
| if (!empty($option)) { | |
| $constant = "LOG_" . trim($option); | |
| if (defined($constant)) { | |
| $value |= constant($constant); | |
| } else { | |
| trigger_error("log4php: Invalid syslog option provided: $option. Whole option string: {$this->option}.", E_USER_WARNING); | |
| } | |
| } | |
| } | |
| return $value; | |
| } | |
| /** Parses the facility string and returns the corresponding int value. */ | |
| private function parseFacility() { | |
| if (!empty($this->facility)) { | |
| $constant = "LOG_" . trim($this->facility); | |
| if (defined($constant)) { | |
| return constant($constant); | |
| } else { | |
| trigger_error("log4php: Invalid syslog facility provided: {$this->facility}.", E_USER_WARNING); | |
| } | |
| } | |
| } | |
| /** Parses the priority string and returns the corresponding int value. */ | |
| private function parsePriority() { | |
| if (!empty($this->priority)) { | |
| $constant = "LOG_" . trim($this->priority); | |
| if (defined($constant)) { | |
| return constant($constant); | |
| } else { | |
| trigger_error("log4php: Invalid syslog priority provided: {$this->priority}.", E_USER_WARNING); | |
| } | |
| } | |
| } | |
| } |