mirror of
https://github.com/Aviortheking/DeltaCMS.git
synced 2025-07-22 10:19:51 +00:00
66 lines
2.0 KiB
PHP
66 lines
2.0 KiB
PHP
<?php
|
|
|
|
namespace AdminPanel\Logger;
|
|
|
|
use Psr\Log\AbstractLogger;
|
|
use Psr\Log\InvalidArgumentException;
|
|
|
|
class Logger extends AbstractLogger
|
|
{
|
|
|
|
private $file;
|
|
private $exception = "{code} {file}[{line}] {type} {message}\n";
|
|
private $start = "[{logger_logger}]: {logger_time} ";
|
|
|
|
private $levels = array(
|
|
'emergency',
|
|
'alert',
|
|
'critical',
|
|
'error',
|
|
'warning',
|
|
'notice',
|
|
'info',
|
|
'debug'
|
|
);
|
|
|
|
public function __construct($file = "./logs.log")
|
|
{
|
|
if (!file_exists($file)) {
|
|
fclose(fopen($file, 'w'));
|
|
}
|
|
$this->file = $file;
|
|
}
|
|
|
|
public static function fillMessage($message, $context)
|
|
{
|
|
foreach ($context as $key => $value) {
|
|
$message = preg_replace("/\{$key\}/", $value, $message);
|
|
}
|
|
return $message;
|
|
}
|
|
|
|
public function log($level, $message = null, array $context = array())
|
|
{
|
|
|
|
if (!in_array($level, $this->levels)) {
|
|
throw new InvalidArgumentException('Level not supported');
|
|
}
|
|
$context["logger_logger"] = ucfirst($level);
|
|
$context["logger_time"] = (new \DateTime())->format("Y-m-d H:i:s");
|
|
if ($message != null) {
|
|
file_put_contents($this->file, $this->fillMessage($this->start . $message . "\n", $context), FILE_APPEND);
|
|
}
|
|
if (isset($context["exception"]) && $context["exception"] instanceof \Exception) {
|
|
$context['code'] = $context["exception"]->getCode();
|
|
$context['file'] = $context["exception"]->getFile();
|
|
$context['line'] = get_class($context["exception"]);
|
|
$context['type'] = $context["exception"]->getCode();
|
|
$context['message'] = $context["exception"]->getMessage();
|
|
file_put_contents($this->file, $this->fillMessage($this->start . $this->exception, $context), FILE_APPEND);
|
|
}
|
|
if ($message === null && !isset($context["exception"])) {
|
|
throw new InvalidArgumentException("no exception nor message was found");
|
|
}
|
|
}
|
|
}
|