| namespace Kanboard\Core\Log; | |
| use Psr\Log\AbstractLogger; | |
| use Psr\Log\LogLevel; | |
| /** | |
| * Base class for loggers | |
| * | |
| * @package Kanboard\Core\Log | |
| * @author Frédéric Guillot | |
| */ | |
| abstract class Base extends AbstractLogger | |
| { | |
| /** | |
| * Minimum log level for the logger | |
| * | |
| * @access private | |
| * @var string | |
| */ | |
| private $level = LogLevel::DEBUG; | |
| /** | |
| * Set minimum log level | |
| * | |
| * @access public | |
| * @param string $level | |
| */ | |
| public function setLevel($level) | |
| { | |
| $this->level = $level; | |
| } | |
| /** | |
| * Get minimum log level | |
| * | |
| * @access public | |
| * @return string | |
| */ | |
| public function getLevel() | |
| { | |
| return $this->level; | |
| } | |
| /** | |
| * Dump to log a variable (by example an array) | |
| * | |
| * @param mixed $variable | |
| */ | |
| public function dump($variable) | |
| { | |
| $this->log(LogLevel::DEBUG, var_export($variable, true)); | |
| } | |
| /** | |
| * Interpolates context values into the message placeholders. | |
| * | |
| * @access protected | |
| * @param string $message | |
| * @param array $context | |
| * @return string | |
| */ | |
| protected function interpolate($message, array $context = array()) | |
| { | |
| // build a replacement array with braces around the context keys | |
| $replace = array(); | |
| foreach ($context as $key => $val) { | |
| $replace['{' . $key . '}'] = $val; | |
| } | |
| // interpolate replacement values into the message and return | |
| return strtr($message, $replace); | |
| } | |
| /** | |
| * Format log message | |
| * | |
| * @param mixed $level | |
| * @param string $message | |
| * @param array $context | |
| * @return string | |
| */ | |
| protected function formatMessage($level, $message, array $context = array()) | |
| { | |
| return '['.date('Y-m-d H:i:s').'] ['.$level.'] '.$this->interpolate($message, $context).PHP_EOL; | |
| } | |
| } | |