Skip to content
This repository has been archived by the owner on Jan 8, 2020. It is now read-only.

Commit

Permalink
Added a ChromePhp logger.
Browse files Browse the repository at this point in the history
  • Loading branch information
waltertamboer committed Aug 21, 2012
1 parent fa03b37 commit d9a0854
Show file tree
Hide file tree
Showing 4 changed files with 281 additions and 0 deletions.
51 changes: 51 additions & 0 deletions library/Zend/Log/Formatter/ChromePhp.php
@@ -0,0 +1,51 @@
<?php
/**
* Zend Framework (http://framework.zend.com/)
*
* @link http://github.com/zendframework/zf2 for the canonical source repository
* @copyright Copyright (c) 2005-2012 Zend Technologies USA Inc. (http://www.zend.com)
* @license http://framework.zend.com/license/new-bsd New BSD License
* @package Zend_Log
*/

namespace Zend\Log\Formatter;

/**
* @category Zend
* @package Zend_Log
* @subpackage Formatter
*/
class ChromePhp implements FormatterInterface
{
/**
* Formats the given event data into a single line to be written by the writer.
*
* @param array $event The event data which should be formatted.
* @return string
*/
public function format($event)
{
return $event['message'];
}

/**
* This method is implemented for FormatterInterface but not used.
*
* @return string
*/
public function getDateTimeFormat()
{
return '';
}

/**
* This method is implemented for FormatterInterface but not used.
*
* @param string $dateTimeFormat
* @return FormatterInterface
*/
public function setDateTimeFormat($dateTimeFormat)
{
return $this;
}
}
105 changes: 105 additions & 0 deletions library/Zend/Log/Writer/ChromePhp.php
@@ -0,0 +1,105 @@
<?php
/**
* Zend Framework (http://framework.zend.com/)
*
* @link http://github.com/zendframework/zf2 for the canonical source repository
* @copyright Copyright (c) 2005-2012 Zend Technologies USA Inc. (http://www.zend.com)
* @license http://framework.zend.com/license/new-bsd New BSD License
* @package Zend_Log
*/

namespace Zend\Log\Writer;

use Zend\Log\Writer\ChromePhp\ChromePhpBridge;
use Zend\Log\Writer\ChromePhp\ChromePhpInterface;
use Zend\Log\Formatter\ChromePhp as ChromePhpFormatter;
use Zend\Log\Logger;

/**
* @category Zend
* @package Zend_Log
* @subpackage Writer
*/
class ChromePhp extends AbstractWriter
{
/**
* The instance of ChromePhpInterface that is used to log messages to.
*
* @var ChromePhpInterface
*/
protected $chromephp;

/**
* Initializes a new instance of this class.
*
* @param null|ChromePhpInterface $instance An instance of ChromePhpInterface
* that should be used for logging
*/
public function __construct(ChromePhpInterface $instance = null)
{
$this->chromephp = $instance === null ? $this->getChromePhp() : $instance;
$this->formatter = new ChromePhpFormatter();
}

/**
* Write a message to the log.
*
* @param array $event event data
* @return void
*/
protected function doWrite(array $event)
{
$line = $this->formatter->format($event);

switch ($event['priority']) {
case Logger::EMERG:
case Logger::ALERT:
case Logger::CRIT:
case Logger::ERR:
$this->chromephp->error($line);
break;
case Logger::WARN:
$this->chromephp->warn($line);
break;
case Logger::NOTICE:
case Logger::INFO:
$this->chromephp->info($line);
break;
case Logger::DEBUG:
$this->chromephp->trace($line);
break;
default:
$this->chromephp->log($line);
break;
}
}

/**
* Gets the ChromePhpInterface instance that is used for logging.
*
* @return ChromePhpInterface
*/
public function getChromePhp()
{
// Remember: class names in strings are absolute; thus the class_exists
// here references the canonical name for the ChromePhp class
if (!$this->chromephp instanceof ChromePhpInterface
&& class_exists('ChromePhp')
) {
$this->setChromePhp(new ChromePhpBridge());
}
return $this->chromephp;
}

/**
* Sets the ChromePhpInterface instance that is used for logging.
*
* @param ChromePhpInterface $instance The instance to set.
* @return ChromePhp
*/
public function setChromePhp(ChromePhpInterface $instance)
{
$this->chromephp = $instance;
return $this;
}
}
71 changes: 71 additions & 0 deletions library/Zend/Log/Writer/ChromePhp/ChromePhpBridge.php
@@ -0,0 +1,71 @@
<?php
/**
* Zend Framework (http://framework.zend.com/)
*
* @link http://github.com/zendframework/zf2 for the canonical source repository
* @copyright Copyright (c) 2005-2012 Zend Technologies USA Inc. (http://www.zend.com)
* @license http://framework.zend.com/license/new-bsd New BSD License
* @package Zend_Log
*/

namespace Zend\Log\Writer\ChromePhp;

use ChromePhp;

/**
* @category Zend
* @package Zend_Log
* @subpackage Writer
*/
class ChromePhpBridge implements ChromePhpInterface
{
/**
* Log an error message
*
* @param string $line
*/
public function error($line)
{
ChromePhp::error($line);
}

/**
* Log a warning
*
* @param string $line
*/
public function warn($line)
{
ChromePhp::warn($line);
}

/**
* Log informational message
*
* @param string $line
*/
public function info($line)
{
ChromePhp::info($line);
}

/**
* Log a trace
*
* @param string $line
*/
public function trace($line)
{
ChromePhp::error($line);
}

/**
* Log a message
*
* @param string $line
*/
public function log($line)
{
ChromePhp::log($line);
}
}
54 changes: 54 additions & 0 deletions library/Zend/Log/Writer/ChromePhp/ChromePhpInterface.php
@@ -0,0 +1,54 @@
<?php
/**
* Zend Framework (http://framework.zend.com/)
*
* @link http://github.com/zendframework/zf2 for the canonical source repository
* @copyright Copyright (c) 2005-2012 Zend Technologies USA Inc. (http://www.zend.com)
* @license http://framework.zend.com/license/new-bsd New BSD License
* @package Zend_Log
*/

namespace Zend\Log\Writer\ChromePhp;

/**
* @category Zend
* @package Zend_Log
* @subpackage Writer
*/
interface ChromePhpInterface
{
/**
* Log an error message
*
* @param string $line
*/
public function error($line);

/**
* Log a warning
*
* @param string $line
*/
public function warn($line);

/**
* Log informational message
*
* @param string $line
*/
public function info($line);

/**
* Log a trace
*
* @param string $line
*/
public function trace($line);

/**
* Log a message
*
* @param string $line
*/
public function log($line);
}

0 comments on commit d9a0854

Please sign in to comment.