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); | |
} | |
} | |
} | |
} |