1
0
mirror of https://github.com/Seldaek/monolog.git synced 2025-07-29 17:30:14 +02:00

Added ZendMonitor Handler

This commit is contained in:
ChristianB
2013-01-30 19:26:25 +01:00
parent 957ee8d0d6
commit a82bac49f2
2 changed files with 148 additions and 0 deletions

View File

@@ -0,0 +1,86 @@
<?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;
/**
* Handler sending logs to Zend Monitor
*
* @author Christian Bergau <cbergau86@gmail.com>
*/
class ZendMonitorHandler extends AbstractProcessingHandler
{
/**
* Monolog level / ZendMonitor Custom Event priority map
*
* @var array
*/
protected $levelMap = array(
Logger::DEBUG => 1,
Logger::INFO => 2,
Logger::NOTICE => 3,
Logger::WARNING => 4,
Logger::ERROR => 5,
Logger::CRITICAL => 6,
Logger::ALERT => 7,
Logger::EMERGENCY => 0,
);
/**
* Is application running on a zend server?
*
* @var bool
*/
protected $isZendServer = false;
/**
* Construct
*
* @param int $level
* @param bool $bubble
*/
public function __construct($level = Logger::DEBUG, $bubble = true)
{
$this->isZendServer = function_exists('zend_monitor_custom_event');
parent::__construct($level, $bubble);
}
/**
* {@inheritdoc}
*/
protected function write(array $record)
{
if ($this->isZendServer()) {
$this->writeZendMonitorCustomEvent($record);
}
}
/**
* Write a record to Zend Monitor
*
* @param array $record
*/
protected function writeZendMonitorCustomEvent(array $record)
{
zend_monitor_custom_event($this->levelMap[$record['level']], $record['message'], $record);
}
/**
* Is Zend Server?
*
* @return bool
*/
public function isZendServer()
{
return $this->isZendServer;
}
}

View File

@@ -0,0 +1,62 @@
<?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;
use Monolog\TestCase;
class ZendMonitorHandlerTest extends TestCase
{
protected $zendMonitorHandler;
public function setUp()
{
if (!function_exists('zend_monitor_custom_event')) {
$this->markTestSkipped('ZendServer is not installed');
}
}
/**
* @covers \Monolog\Handler\ZendMonitor::__construct
* @covers \Monolog\Handler\ZendMonitor::isZendServer
*/
public function testIsZendServerReturnsTrue()
{
$zendMonitor = $this->getMockBuilder('Monolog\Handler\ZendMonitorHandler')
->setMethods(null)
->getMock();
$this->assertTrue($zendMonitor->isZendServer());
}
/**
* @covers \Monolog\Handler\ZendMonitor::write
*/
public function testWrite()
{
$zendMonitor = $this->getMockBuilder('Monolog\Handler\ZendMonitorHandler')
->setMethods(array('writeZendMonitorCustomEvent'))
->getMock();
$zendMonitor->expects($this->once())
->method('writeZendMonitorCustomEvent');
$zendMonitor->handle(
array(
'message' => 'addDebug Message',
'context' => array(),
'level' => Logger::DEBUG,
'level_name' => 'DEBUG',
'channel' => 'zendmonitor',
'extra' => array(),
'formatted' => '[2013-01-30 19:07:32] zendmonitor.DEBUG: addDebug Message [] []'
)
);
}
}