michaelmoussa/zend-psr-log

View on GitHub
src/PsrLogger.php

Summary

Maintainability
A
0 mins
Test Coverage
<?php
/**
 * Zend PSR Log
 *
 * @link      http://github.com/michaelmoussa/zend-psr-log
 * @license   http://opensource.org/licenses/MIT The MIT License
 */
namespace ZendPsrLog;

use Psr\Log\AbstractLogger;
use Psr\Log\LoggerInterface as PsrLoggerInterface;
use Psr\Log\LogLevel;
use Zend\Log\Logger as ZendLogger;

/**
 * A PSR-3 compliant proxy to an underlying Zend\Log\Logger
 */
class PsrLogger extends AbstractLogger implements PsrLoggerInterface
{
    /**
     * Instance of a ZF2 logger.
     *
     * @var ZendLogger
     */
    protected $zendLogger;

    /**
     * Mapping of Zend Log levels to PSR-3 defined LogLevels.
     *
     * @var array
     */
    public static $zendLogLevelMap = [
        LogLevel::EMERGENCY => ZendLogger::EMERG,
        LogLevel::ALERT => ZendLogger::ALERT,
        LogLevel::CRITICAL => ZendLogger::CRIT,
        LogLevel::ERROR => ZendLogger::ERR,
        LogLevel::WARNING => ZendLogger::WARN,
        LogLevel::NOTICE => ZendLogger::NOTICE,
        LogLevel::INFO => ZendLogger::INFO,
        LogLevel::DEBUG => ZendLogger::DEBUG,
    ];

    /**
     * Constructor
     *
     * @param ZendLogger $zendLogger
     */
    public function __construct(ZendLogger $zendLogger)
    {
        $this->zendLogger = $zendLogger;
    }

    /**
     * Returns the integer Zend Log Level corresponding to the PSR-3 string log level provided.
     *
     * Zend Logger throws an exception if the log level is not valid, so if there is no corresponding value,
     * then the provided level will be returned as-is.
     *
     * @param string $level
     * @return mixed
     */
    public function getZendLogLevel($level)
    {
        return isset(self::$zendLogLevelMap[$level]) ? self::$zendLogLevelMap[$level] : $level;
    }

    /**
     * Proxies log calls to the Zend Logger with the corresponding log level.
     *
     * @param mixed $level
     * @param string $message
     * @param array $context
     * @return Logger
     */
    public function log($level, $message, array $context = [])
    {
        return $this->zendLogger->log($this->getZendLogLevel($level), $message, $context);
    }
}