runff 1.0 commit
This commit is contained in:
75
lib/SimpleSAML/Logger/SyslogLoggingHandler.php
Executable file
75
lib/SimpleSAML/Logger/SyslogLoggingHandler.php
Executable file
@@ -0,0 +1,75 @@
|
||||
<?php
|
||||
|
||||
namespace SimpleSAML\Logger;
|
||||
|
||||
use SimpleSAML\Utils\System;
|
||||
|
||||
/**
|
||||
* A logger that sends messages to syslog.
|
||||
*
|
||||
* @author Lasse Birnbaum Jensen, SDU.
|
||||
* @author Andreas Åkre Solberg, UNINETT AS. <andreas.solberg@uninett.no>
|
||||
* @package SimpleSAMLphp
|
||||
*/
|
||||
class SyslogLoggingHandler implements LoggingHandlerInterface
|
||||
{
|
||||
private $isWindows = false;
|
||||
private $format;
|
||||
|
||||
|
||||
/**
|
||||
* Build a new logging handler based on syslog.
|
||||
*/
|
||||
public function __construct(\SimpleSAML_Configuration $config)
|
||||
{
|
||||
$facility = $config->getInteger('logging.facility', defined('LOG_LOCAL5') ? constant('LOG_LOCAL5') : LOG_USER);
|
||||
|
||||
$processname = $config->getString('logging.processname', 'SimpleSAMLphp');
|
||||
|
||||
// Setting facility to LOG_USER (only valid in Windows), enable log level rewrite on windows systems
|
||||
if (System::getOS() === System::WINDOWS) {
|
||||
$this->isWindows = true;
|
||||
$facility = LOG_USER;
|
||||
}
|
||||
|
||||
openlog($processname, LOG_PID, $facility);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Set the format desired for the logs.
|
||||
*
|
||||
* @param string $format The format used for logs.
|
||||
*/
|
||||
public function setLogFormat($format)
|
||||
{
|
||||
$this->format = $format;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Log a message to syslog.
|
||||
*
|
||||
* @param int $level The log level.
|
||||
* @param string $string The formatted message to log.
|
||||
*/
|
||||
public function log($level, $string)
|
||||
{
|
||||
// changing log level to supported levels if OS is Windows
|
||||
if ($this->isWindows) {
|
||||
if ($level <= 4) {
|
||||
$level = LOG_ERR;
|
||||
} else {
|
||||
$level = LOG_INFO;
|
||||
}
|
||||
}
|
||||
|
||||
$formats = array('%process', '%level');
|
||||
$replacements = array('', $level);
|
||||
$string = str_replace($formats, $replacements, $string);
|
||||
$string = preg_replace('/%\w+(\{[^\}]+\})?/', '', $string);
|
||||
$string = trim($string);
|
||||
|
||||
syslog($level, $string);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user