File "Logger.php"

Full Path: /home/amervokv/ecomlive.net/wp-content/mu-plugins/object-cache-pro/src/Loggers/Logger.php
File size: 4.84 KB
MIME-type: text/x-php
Charset: utf-8

<?php
/**
 * Copyright © 2019-2023 Rhubarb Tech Inc. All Rights Reserved.
 *
 * The Object Cache Pro Software and its related materials are property and confidential
 * information of Rhubarb Tech Inc. Any reproduction, use, distribution, or exploitation
 * of the Object Cache Pro Software and its related materials, in whole or in part,
 * is strictly forbidden unless prior permission is obtained from Rhubarb Tech Inc.
 *
 * In addition, any reproduction, use, distribution, or exploitation of the Object Cache Pro
 * Software and its related materials, in whole or in part, is subject to the End-User License
 * Agreement accessible in the included `LICENSE` file, or at: https://objectcache.pro/eula
 */

declare(strict_types=1);

namespace RedisCachePro\Loggers;

abstract class Logger implements LoggerInterface
{
    /**
     * System is unusable.
     *
     * @var string
     */
    const EMERGENCY = 'emergency';

    /**
     * Action must be taken immediately.
     *
     * @var string
     */
    const ALERT = 'alert';

    /**
     * Critical conditions.
     *
     * @var string
     */
    const CRITICAL = 'critical';

    /**
     * Runtime errors that do not require immediate action but should typically
     * be logged and monitored.
     *
     * @var string
     */
    const ERROR = 'error';

    /**
     * Exceptional occurrences that are not errors.
     *
     * @var string
     */
    const WARNING = 'warning';

    /**
     * Normal but significant events.
     *
     * @var string
     */
    const NOTICE = 'notice';

    /**
     * Interesting events.
     *
     * @var string
     */
    const INFO = 'info';

    /**
     * Detailed debug information.
     *
     * @var string
     */
    const DEBUG = 'debug';

    /**
     * Logged levels.
     *
     * @var string[]|null
     */
    protected $levels;

    /**
     * System is unusable.
     *
     * @param  string  $message
     * @param  array<mixed>  $context
     * @return void
     */
    public function emergency($message, array $context = [])
    {
        $this->log(self::EMERGENCY, $message, $context);
    }

    /**
     * Action must be taken immediately.
     *
     * Example: Entire website down, database unavailable, etc. This should
     * trigger the SMS alerts and wake you up.
     *
     * @param  string  $message
     * @param  array<mixed>  $context
     * @return void
     */
    public function alert($message, array $context = [])
    {
        $this->log(self::ALERT, $message, $context);
    }

    /**
     * Critical conditions.
     *
     * Example: Application component unavailable, unexpected exception.
     *
     * @param  string  $message
     * @param  array<mixed>  $context
     * @return void
     */
    public function critical($message, array $context = [])
    {
        $this->log(self::CRITICAL, $message, $context);
    }

    /**
     * Runtime errors that do not require immediate action but should typically
     * be logged and monitored.
     *
     * @param  string  $message
     * @param  array<mixed>  $context
     * @return void
     */
    public function error($message, array $context = [])
    {
        $this->log(self::ERROR, $message, $context);
    }

    /**
     * Exceptional occurrences that are not errors.
     *
     * Example: Use of deprecated APIs, poor use of an API, undesirable things
     * that are not necessarily wrong.
     *
     * @param  string  $message
     * @param  array<mixed>  $context
     * @return void
     */
    public function warning($message, array $context = [])
    {
        $this->log(self::WARNING, $message, $context);
    }

    /**
     * Normal but significant events.
     *
     * @param  string  $message
     * @param  array<mixed>  $context
     * @return void
     */
    public function notice($message, array $context = [])
    {
        $this->log(self::NOTICE, $message, $context);
    }

    /**
     * Interesting events.
     *
     * Example: User logs in, SQL logs.
     *
     * @param  string  $message
     * @param  array<mixed>  $context
     * @return void
     */
    public function info($message, array $context = [])
    {
        $this->log(self::INFO, $message, $context);
    }

    /**
     * Detailed debug information.
     *
     * @param  string  $message
     * @param  array<mixed>  $context
     * @return void
     */
    public function debug($message, array $context = [])
    {
        $this->log(self::DEBUG, $message, $context);
    }

    /**
     * Logs with an arbitrary level.
     *
     * @param  mixed  $level
     * @param  string  $message
     * @param  array<mixed>  $context
     * @return void
     */
    abstract public function log($level, $message, array $context = []);

    /**
     * Set the logged levels.
     *
     * @param  string[]  $levels
     * @return void
     */
    public function setLevels(array $levels)
    {
        $this->levels = $levels;
    }
}