This commit is contained in:
2023-08-14 22:01:43 +08:00
parent 4850748c77
commit 676f0ce1e6
2 changed files with 58 additions and 26 deletions
@@ -17,7 +17,6 @@ use Kiri\Events\EventInterface;
use Kiri\Di\LocalService;
use Kiri\Config\ConfigProvider;
use Kiri\Exception\{InitException};
use Monolog\Handler\StreamHandler;
use Psr\Container\ContainerExceptionInterface;
use Psr\Container\ContainerInterface;
use Psr\Container\NotFoundExceptionInterface;
@@ -90,12 +89,6 @@ abstract class BaseApplication extends Component
public function mapping(ConfigProvider $config): void
{
$this->container->bind(LoggerInterface::class, $logger = new Logger($config->get('id')));
$levels = \config('log.level', self::LOGGER_LEVELS);
foreach ($levels as $level) {
$logger->pushHandler(new StreamHandler(APP_PATH . 'storage/logs/' . Logger::getLevelName($level) . '/' . date('Y-m-d') . '.log', $level));
}
foreach ($config->get('mapping', []) as $interface => $class) {
$this->container->set($interface, $class);
}
+39
View File
@@ -4,9 +4,18 @@ declare(strict_types=1);
namespace Kiri\Error;
use Kiri\Abstracts\BaseApplication;
use Kiri\Application;
use Kiri\Di\Inject\Container;
use Monolog\Handler\StreamHandler;
use Monolog\Logger;
use Psr\Log\LoggerInterface;
use ReflectionException;
/**
* @see LoggerInterface
*/
class StdoutLogger
{
@@ -17,6 +26,10 @@ class StdoutLogger
private array $errors = [];
#[Container(Logger::class)]
public Logger $logger;
/**
* @param $message
* @param string $model
@@ -36,6 +49,32 @@ class StdoutLogger
}
/**
* @param string $name
* @param array $arguments
* @return void
* @throws ReflectionException
*/
public function __call(string $name, array $arguments)
{
// TODO: Implement __call() method.
if (!isset($arguments[2])) {
$arguments[2] = [];
}
[$level, $message, $context] = $arguments;
$levels = \config('log.level', BaseApplication::LOGGER_LEVELS);
if (!in_array($level, $levels)) {
return;
}
if (!$this->logger->isHandling($level)) {
$path = APP_PATH . 'storage/logs/' . strtolower(Logger::getLevelName($level)) . '/' . date('Y-m-d') . '.log';
$this->logger->pushHandler(new StreamHandler($path, $level));
}
$this->logger->{$name}($level, $message, $context);
}
/**
* @param string $model
* @return mixed