mirror of
https://github.com/Seldaek/monolog.git
synced 2025-08-02 11:20:31 +02:00
Added ZendMonitor Handler
This commit is contained in:
86
src/Monolog/Handler/ZendMonitorHandler.php
Normal file
86
src/Monolog/Handler/ZendMonitorHandler.php
Normal 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;
|
||||||
|
}
|
||||||
|
}
|
62
tests/Monolog/Handler/ZendMonitorHandlerTest.php
Normal file
62
tests/Monolog/Handler/ZendMonitorHandlerTest.php
Normal 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 [] []'
|
||||||
|
)
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
Reference in New Issue
Block a user