Logger.php 2.29 KB
Newer Older
Ketan's avatar
Ketan committed
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93
<?php
/**
 * Copyright © Magento, Inc. All rights reserved.
 * See COPYING.txt for license details.
 */
namespace Magento\Framework\Session\SaveHandler\Redis;

use Cm\RedisSession\Handler\ConfigInterface;
use Psr\Log\LoggerInterface;
use Magento\Framework\App\Request\Http as Request;

class Logger implements \Cm\RedisSession\Handler\LoggerInterface
{
    /**
     * @var LoggerInterface
     */
    private $logger;

    /**
     * @var int
     */
    private $logLevel;

    /**
     * @var Request
     */
    private $request;

    /**
     * Logger constructor
     *
     * @param ConfigInterface $config
     * @param LoggerInterface $logger
     * @param Request $request
     */
    public function __construct(ConfigInterface $config, LoggerInterface $logger, Request $request)
    {
        $this->logger = $logger;
        $this->request = $request;
        $this->logLevel = $config->getLogLevel() ?: self::ALERT;
    }

    /**
     * {@inheritdoc}
     */
    public function setLogLevel($level)
    {
        $this->logLevel = $level;
    }

    /**
     * {@inheritdoc}
     */
    public function log($message, $level)
    {
        $message .= ' ' . $this->request->getRequestUri();
        if ($this->logLevel >= $level) {
            switch ($level) {
                case self::EMERGENCY:
                    $this->logger->emergency($message);
                    break;
                case self::ALERT:
                    $this->logger->alert($message);
                    break;
                case self::CRITICAL:
                    $this->logger->critical($message);
                    break;
                case self::ERROR:
                    $this->logger->error($message);
                    break;
                case self::WARNING:
                    $this->logger->warning($message);
                    break;
                case self::NOTICE:
                    $this->logger->notice($message);
                    break;
                case self::INFO:
                    $this->logger->info($message);
                    break;
                default:
                    $this->logger->debug($message);
            }
        }
    }

    /**
     * {@inheritdoc}
     */
    public function logException(\Exception $e)
    {
        $this->logger->critical($e->getMessage());
    }
}