68 lines
1.8 KiB
PHP
68 lines
1.8 KiB
PHP
|
<?php
|
||
|
|
||
|
/*
|
||
|
* This file is part of the Monolog package.
|
||
|
*
|
||
|
* (c) Jordi Boggiano <j.boggiano@seld.be>
|
||
|
*
|
||
|
* For the full copyright and license information, please view the LICENSE
|
||
|
* file that was distributed with this source code.
|
||
|
*/
|
||
|
|
||
|
namespace Monolog\Handler;
|
||
|
|
||
|
use Monolog\Logger;
|
||
|
|
||
|
/**
|
||
|
* Logs to syslog service.
|
||
|
*
|
||
|
* usage example:
|
||
|
*
|
||
|
* $log = new Logger('application');
|
||
|
* $syslog = new SyslogHandler('myfacility', 'local6');
|
||
|
* $formatter = new LineFormatter("%channel%.%level_name%: %message% %extra%");
|
||
|
* $syslog->setFormatter($formatter);
|
||
|
* $log->pushHandler($syslog);
|
||
|
*
|
||
|
* @author Sven Paulus <sven@karlsruhe.org>
|
||
|
*/
|
||
|
class SyslogHandler extends AbstractSyslogHandler
|
||
|
{
|
||
|
protected $ident;
|
||
|
protected $logopts;
|
||
|
|
||
|
/**
|
||
|
* @param string $ident
|
||
|
* @param mixed $facility
|
||
|
* @param int $level The minimum logging level at which this handler will be triggered
|
||
|
* @param bool $bubble Whether the messages that are handled can bubble up the stack or not
|
||
|
* @param int $logopts Option flags for the openlog() call, defaults to LOG_PID
|
||
|
*/
|
||
|
public function __construct($ident, $facility = LOG_USER, $level = Logger::DEBUG, $bubble = true, $logopts = LOG_PID)
|
||
|
{
|
||
|
parent::__construct($facility, $level, $bubble);
|
||
|
|
||
|
$this->ident = $ident;
|
||
|
$this->logopts = $logopts;
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* {@inheritdoc}
|
||
|
*/
|
||
|
public function close()
|
||
|
{
|
||
|
closelog();
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* {@inheritdoc}
|
||
|
*/
|
||
|
protected function write(array $record)
|
||
|
{
|
||
|
if (!openlog($this->ident, $this->logopts, $this->facility)) {
|
||
|
throw new \LogicException('Can\'t open syslog for ident "'.$this->ident.'" and facility "'.$this->facility.'"');
|
||
|
}
|
||
|
syslog($this->logLevels[$record['level']], (string) $record['formatted']);
|
||
|
}
|
||
|
}
|