diff options
-rw-r--r-- | src/Monolog/Handler/SyslogUdpHandler.php | 25 | ||||
-rw-r--r-- | tests/Monolog/Handler/SyslogUdpHandlerTest.php | 17 |
2 files changed, 37 insertions, 5 deletions
diff --git a/src/Monolog/Handler/SyslogUdpHandler.php b/src/Monolog/Handler/SyslogUdpHandler.php index 74d946a..4718711 100644 --- a/src/Monolog/Handler/SyslogUdpHandler.php +++ b/src/Monolog/Handler/SyslogUdpHandler.php @@ -22,6 +22,7 @@ use Monolog\Handler\SyslogUdp\UdpSocket; class SyslogUdpHandler extends AbstractSyslogHandler { protected $socket; + protected $ident; /** * @param string $host @@ -29,11 +30,14 @@ class SyslogUdpHandler extends AbstractSyslogHandler * @param mixed $facility * @param int $level The minimum logging level at which this handler will be triggered * @param Boolean $bubble Whether the messages that are handled can bubble up the stack or not + * @param string $ident Program name or tag for each log message. */ - public function __construct($host, $port = 514, $facility = LOG_USER, $level = Logger::DEBUG, $bubble = true) + public function __construct($host, $port = 514, $facility = LOG_USER, $level = Logger::DEBUG, $bubble = true, $ident = 'php') { parent::__construct($facility, $level, $bubble); + $this->ident = $ident; + $this->socket = new UdpSocket($host, $port ?: 514); } @@ -69,7 +73,24 @@ class SyslogUdpHandler extends AbstractSyslogHandler { $priority = $severity + $this->facility; - return "<$priority>1 "; + if (!$pid = getmypid()) { + $pid = '-'; + } + + if (!$hostname = gethostname()) { + $hostname = '-'; + } + + return "<$priority>1 " . + $this->getDateTime() . " " . + $hostname . " " . + $this->ident . " " . + $pid . " - - "; + } + + protected function getDateTime() + { + return date(\DateTime::RFC3339); } /** diff --git a/tests/Monolog/Handler/SyslogUdpHandlerTest.php b/tests/Monolog/Handler/SyslogUdpHandlerTest.php index aa4a334..7ee8a98 100644 --- a/tests/Monolog/Handler/SyslogUdpHandlerTest.php +++ b/tests/Monolog/Handler/SyslogUdpHandlerTest.php @@ -28,16 +28,27 @@ class SyslogUdpHandlerTest extends TestCase public function testWeSplitIntoLines() { - $handler = new SyslogUdpHandler("127.0.0.1", 514, "authpriv"); + $time = '2014-01-07T12:34'; + $pid = getmypid(); + $host = gethostname(); + + $handler = $this->getMockBuilder('\Monolog\Handler\SyslogUdpHandler') + ->setConstructorArgs(array("127.0.0.1", 514, "authpriv")) + ->setMethods(array('getDateTime')) + ->getMock(); + + $handler->method('getDateTime') + ->willReturn($time); + $handler->setFormatter(new \Monolog\Formatter\ChromePHPFormatter()); $socket = $this->getMock('\Monolog\Handler\SyslogUdp\UdpSocket', array('write'), array('lol', 'lol')); $socket->expects($this->at(0)) ->method('write') - ->with("lol", "<".(LOG_AUTHPRIV + LOG_WARNING).">1 "); + ->with("lol", "<".(LOG_AUTHPRIV + LOG_WARNING).">1 $time $host php $pid - - "); $socket->expects($this->at(1)) ->method('write') - ->with("hej", "<".(LOG_AUTHPRIV + LOG_WARNING).">1 "); + ->with("hej", "<".(LOG_AUTHPRIV + LOG_WARNING).">1 $time $host php $pid - - "); $handler->setSocket($socket); |