.=< { Star Gans Tq } >=.
<?php
/**
* @package s9e\TextFormatter
* @copyright Copyright (c) 2010-2020 The s9e authors
* @license http://www.opensource.org/licenses/mit-license.php The MIT License
*/
namespace s9e\TextFormatter\Parser;
use InvalidArgumentException;
use s9e\TextFormatter\Parser;
class Logger
{
/**
* @var string Name of the attribute being processed
*/
protected $attrName;
/**
* @var array Log entries in the form [[<type>,<msg>,<context>]]
*/
protected $logs = [];
/**
* @var Tag Tag being processed
*/
protected $tag;
/**
* Add a log entry
*
* @param string $type
* @param string $msg
* @param array $context
* @return void
*/
protected function add($type, $msg, array $context)
{
if (!isset($context['attrName']) && isset($this->attrName))
{
$context['attrName'] = $this->attrName;
}
if (!isset($context['tag']) && isset($this->tag))
{
$context['tag'] = $this->tag;
}
$this->logs[] = [$type, $msg, $context];
}
/**
* Clear the log
*
* @return void
*/
public function clear()
{
$this->logs = [];
$this->unsetAttribute();
$this->unsetTag();
}
/**
* Return the logs
*
* @return array
*/
public function getLogs()
{
return $this->logs;
}
/**
* Record the name of the attribute being processed
*
* @param string $attrName
* @return void
*/
public function setAttribute($attrName)
{
$this->attrName = $attrName;
}
/**
* Record the tag being processed
*
* @param Tag $tag
* @return void
*/
public function setTag(Tag $tag)
{
$this->tag = $tag;
}
/**
* Unset the name of the attribute being processed
*
* @return void
*/
public function unsetAttribute()
{
unset($this->attrName);
}
/**
* Unset the tag being processed
*
* @return void
*/
public function unsetTag()
{
unset($this->tag);
}
//==========================================================================
// Log levels
//==========================================================================
/**
* Add a "debug" type log entry
*
* @param string $msg Log message
* @param array $context
* @return void
*/
public function debug($msg, array $context = [])
{
$this->add('debug', $msg, $context);
}
/**
* Add an "err" type log entry
*
* @param string $msg Log message
* @param array $context
* @return void
*/
public function err($msg, array $context = [])
{
$this->add('err', $msg, $context);
}
/**
* Add an "info" type log entry
*
* @param string $msg Log message
* @param array $context
* @return void
*/
public function info($msg, array $context = [])
{
$this->add('info', $msg, $context);
}
/**
* Add a "warn" type log entry
*
* @param string $msg Log message
* @param array $context
* @return void
*/
public function warn($msg, array $context = [])
{
$this->add('warn', $msg, $context);
}
}