197 lines
		
	
	
		
			4.3 KiB
		
	
	
	
		
			PHP
		
	
	
	
			
		
		
	
	
			197 lines
		
	
	
		
			4.3 KiB
		
	
	
	
		
			PHP
		
	
	
	
<?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\Formatter\FormatterInterface;
 | 
						|
use Monolog\Formatter\LineFormatter;
 | 
						|
use Monolog\Logger;
 | 
						|
use Monolog\ResettableInterface;
 | 
						|
 | 
						|
/**
 | 
						|
 * Base Handler class providing the Handler structure
 | 
						|
 *
 | 
						|
 * @author Jordi Boggiano <j.boggiano@seld.be>
 | 
						|
 */
 | 
						|
abstract class AbstractHandler implements HandlerInterface, ResettableInterface
 | 
						|
{
 | 
						|
    protected $level = Logger::DEBUG;
 | 
						|
    protected $bubble = true;
 | 
						|
 | 
						|
    /**
 | 
						|
     * @var FormatterInterface
 | 
						|
     */
 | 
						|
    protected $formatter;
 | 
						|
    protected $processors = array();
 | 
						|
 | 
						|
    /**
 | 
						|
     * @param int  $level  The minimum logging level at which this handler will be triggered
 | 
						|
     * @param bool $bubble Whether the messages that are handled can bubble up the stack or not
 | 
						|
     */
 | 
						|
    public function __construct($level = Logger::DEBUG, $bubble = true)
 | 
						|
    {
 | 
						|
        $this->setLevel($level);
 | 
						|
        $this->bubble = $bubble;
 | 
						|
    }
 | 
						|
 | 
						|
    /**
 | 
						|
     * {@inheritdoc}
 | 
						|
     */
 | 
						|
    public function isHandling(array $record)
 | 
						|
    {
 | 
						|
        return $record['level'] >= $this->level;
 | 
						|
    }
 | 
						|
 | 
						|
    /**
 | 
						|
     * {@inheritdoc}
 | 
						|
     */
 | 
						|
    public function handleBatch(array $records)
 | 
						|
    {
 | 
						|
        foreach ($records as $record) {
 | 
						|
            $this->handle($record);
 | 
						|
        }
 | 
						|
    }
 | 
						|
 | 
						|
    /**
 | 
						|
     * Closes the handler.
 | 
						|
     *
 | 
						|
     * This will be called automatically when the object is destroyed
 | 
						|
     */
 | 
						|
    public function close()
 | 
						|
    {
 | 
						|
    }
 | 
						|
 | 
						|
    /**
 | 
						|
     * {@inheritdoc}
 | 
						|
     */
 | 
						|
    public function pushProcessor($callback)
 | 
						|
    {
 | 
						|
        if (!is_callable($callback)) {
 | 
						|
            throw new \InvalidArgumentException('Processors must be valid callables (callback or object with an __invoke method), '.var_export($callback, true).' given');
 | 
						|
        }
 | 
						|
        array_unshift($this->processors, $callback);
 | 
						|
 | 
						|
        return $this;
 | 
						|
    }
 | 
						|
 | 
						|
    /**
 | 
						|
     * {@inheritdoc}
 | 
						|
     */
 | 
						|
    public function popProcessor()
 | 
						|
    {
 | 
						|
        if (!$this->processors) {
 | 
						|
            throw new \LogicException('You tried to pop from an empty processor stack.');
 | 
						|
        }
 | 
						|
 | 
						|
        return array_shift($this->processors);
 | 
						|
    }
 | 
						|
 | 
						|
    /**
 | 
						|
     * {@inheritdoc}
 | 
						|
     */
 | 
						|
    public function setFormatter(FormatterInterface $formatter)
 | 
						|
    {
 | 
						|
        $this->formatter = $formatter;
 | 
						|
 | 
						|
        return $this;
 | 
						|
    }
 | 
						|
 | 
						|
    /**
 | 
						|
     * {@inheritdoc}
 | 
						|
     */
 | 
						|
    public function getFormatter()
 | 
						|
    {
 | 
						|
        if (!$this->formatter) {
 | 
						|
            $this->formatter = $this->getDefaultFormatter();
 | 
						|
        }
 | 
						|
 | 
						|
        return $this->formatter;
 | 
						|
    }
 | 
						|
 | 
						|
    /**
 | 
						|
     * Sets minimum logging level at which this handler will be triggered.
 | 
						|
     *
 | 
						|
     * @param  int|string $level Level or level name
 | 
						|
     * @return self
 | 
						|
     */
 | 
						|
    public function setLevel($level)
 | 
						|
    {
 | 
						|
        $this->level = Logger::toMonologLevel($level);
 | 
						|
 | 
						|
        return $this;
 | 
						|
    }
 | 
						|
 | 
						|
    /**
 | 
						|
     * Gets minimum logging level at which this handler will be triggered.
 | 
						|
     *
 | 
						|
     * @return int
 | 
						|
     */
 | 
						|
    public function getLevel()
 | 
						|
    {
 | 
						|
        return $this->level;
 | 
						|
    }
 | 
						|
 | 
						|
    /**
 | 
						|
     * Sets the bubbling behavior.
 | 
						|
     *
 | 
						|
     * @param  bool $bubble true means that this handler allows bubbling.
 | 
						|
     *                      false means that bubbling is not permitted.
 | 
						|
     * @return self
 | 
						|
     */
 | 
						|
    public function setBubble($bubble)
 | 
						|
    {
 | 
						|
        $this->bubble = $bubble;
 | 
						|
 | 
						|
        return $this;
 | 
						|
    }
 | 
						|
 | 
						|
    /**
 | 
						|
     * Gets the bubbling behavior.
 | 
						|
     *
 | 
						|
     * @return bool true means that this handler allows bubbling.
 | 
						|
     *              false means that bubbling is not permitted.
 | 
						|
     */
 | 
						|
    public function getBubble()
 | 
						|
    {
 | 
						|
        return $this->bubble;
 | 
						|
    }
 | 
						|
 | 
						|
    public function __destruct()
 | 
						|
    {
 | 
						|
        try {
 | 
						|
            $this->close();
 | 
						|
        } catch (\Exception $e) {
 | 
						|
            // do nothing
 | 
						|
        } catch (\Throwable $e) {
 | 
						|
            // do nothing
 | 
						|
        }
 | 
						|
    }
 | 
						|
 | 
						|
    public function reset()
 | 
						|
    {
 | 
						|
        foreach ($this->processors as $processor) {
 | 
						|
            if ($processor instanceof ResettableInterface) {
 | 
						|
                $processor->reset();
 | 
						|
            }
 | 
						|
        }
 | 
						|
    }
 | 
						|
 | 
						|
    /**
 | 
						|
     * Gets the default formatter.
 | 
						|
     *
 | 
						|
     * @return FormatterInterface
 | 
						|
     */
 | 
						|
    protected function getDefaultFormatter()
 | 
						|
    {
 | 
						|
        return new LineFormatter();
 | 
						|
    }
 | 
						|
}
 |