diff --git a/app/common/Implement/Log/MySQLHandler.php b/app/common/Implement/Log/MySQLHandler.php new file mode 100644 index 0000000..cae0ac6 --- /dev/null +++ b/app/common/Implement/Log/MySQLHandler.php @@ -0,0 +1,60 @@ +initialized) { + $this->initialized(); + } + $this->cleanup(); + $this->statement->execute([ + 'channel' => $record->channel, + 'level' => $record->level->getName(), + 'message' => $record->formatted, + 'time' => $record->datetime->format('Y-m-d H:i:s.u'), + 'context' => (count($record->context) > 0) ? json_encode($record->context, JSON_UNESCAPED_SLASHES) : '', + 'extra' => (count($record->extra) > 0) ? json_encode($record->extra, JSON_UNESCAPED_SLASHES) : '' + ]); + } + + private function initialized(): void + { + $query = <<connection->getPDO()->exec($query); + $query = <<statement = $this->connection->getPDO()->prepare($query); + $this->initialized = true; + } + private function cleanup(): void + { + $query = "DELETE FROM monolog WHERE time < DATE_SUB(CURDATE(), INTERVAL 90 DAY)"; + $this->connection->query($query); + } +} diff --git a/app/common/Implement/Log/PDOFormatter.php b/app/common/Implement/Log/PDOFormatter.php new file mode 100644 index 0000000..7233dce --- /dev/null +++ b/app/common/Implement/Log/PDOFormatter.php @@ -0,0 +1,19 @@ +normalize($record); + return $normalized['message']; + } +} diff --git a/app/setup/setups/logs.php b/app/setup/setups/logs.php index cb17296..df34888 100644 --- a/app/setup/setups/logs.php +++ b/app/setup/setups/logs.php @@ -4,18 +4,6 @@ use Psr\Container\ContainerInterface; return [ Psr\Log\LoggerInterface::class => function(ContainerInterface $container) { return new Monolog\Logger('incoviba', [ - new Monolog\Handler\FilterHandler( - (new Monolog\Handler\RotatingFileHandler('/logs/debug.log', 10)) - ->setFormatter(new Monolog\Formatter\LineFormatter(null, null, false, false, true)), - Monolog\Level::Debug, - Monolog\Level::Debug - ), - new Monolog\Handler\FilterHandler( - (new Monolog\Handler\RotatingFileHandler('/logs/info.log', 10)) - ->setFormatter(new Monolog\Formatter\LineFormatter(null, null, false, false, true)), - Monolog\Level::Info, - Monolog\Level::Warning, - ), new Monolog\Handler\FilterHandler( (new Monolog\Handler\RotatingFileHandler('/logs/error.log', 10)) ->setFormatter(new Monolog\Formatter\LineFormatter(null, null, false, false, true)), @@ -26,6 +14,17 @@ return [ (new Monolog\Handler\RotatingFileHandler('/logs/critical.log', 10)) ->setFormatter(new Monolog\Formatter\LineFormatter(null, null, false, false, true)), Monolog\Level::Critical + ), + new Monolog\Handler\FilterHandler( + new Monolog\Handler\RedisHandler($container->get(Predis\ClientInterface::class), 'logs:notices'), + Monolog\Level::Notice, + Monolog\Level::Warning + ), + new Monolog\Handler\FilterHandler( + (new Incoviba\Common\Implement\Log\MySQLHandler($container->get(Incoviba\Common\Define\Connection::class))) + ->setFormatter(new Incoviba\Common\Implement\Log\PDOFormatter()), + Monolog\Level::Debug, + Monolog\Level::Warning ) ], [ $container->get(Monolog\Processor\PsrLogMessageProcessor::class), diff --git a/app/setup/setups/services.php b/app/setup/setups/services.php index 6450aec..2864326 100644 --- a/app/setup/setups/services.php +++ b/app/setup/setups/services.php @@ -26,40 +26,40 @@ return [ ->register('usd', $mindicador) ->register('ipc', $ine); }, - Predis\Client::class => function(ContainerInterface $container) { + Predis\ClientInterface::class => function(ContainerInterface $container) { return new Predis\Client([ 'scheme' => 'tcp', 'host' => $container->get('REDIS_HOST'), 'port' => $container->get('REDIS_PORT') ]); }, - \Incoviba\Service\Contabilidad\Cartola::class => function(ContainerInterface $container) { - return (new \Incoviba\Service\Contabilidad\Cartola( + Incoviba\Service\Contabilidad\Cartola::class => function(ContainerInterface $container) { + return (new Incoviba\Service\Contabilidad\Cartola( $container->get(Psr\Log\LoggerInterface::class), $container->get(Psr\Http\Message\StreamFactoryInterface::class), $container->get(Incoviba\Common\Define\Contabilidad\Exporter::class), $container->get(Incoviba\Repository\Inmobiliaria::class), $container->get(Incoviba\Repository\Inmobiliaria\Cuenta::class), - $container->get(\Incoviba\Repository\Contabilidad\Movimiento::class), - $container->get(\Incoviba\Service\Contabilidad\Movimiento::class), - $container->get(\Incoviba\Repository\Contabilidad\Cartola::class) + $container->get(Incoviba\Repository\Contabilidad\Movimiento::class), + $container->get(Incoviba\Service\Contabilidad\Movimiento::class), + $container->get(Incoviba\Repository\Contabilidad\Cartola::class) )) - ->register('security', $container->get(\Incoviba\Service\Contabilidad\Cartola\Security::class)) - ->register('itau', $container->get(\Incoviba\Service\Contabilidad\Cartola\Itau::class)) - ->register('santander', $container->get(\Incoviba\Service\Contabilidad\Cartola\Santander::class)) - ->register('bci', $container->get(\Incoviba\Service\Contabilidad\Cartola\BCI::class)); + ->register('security', $container->get(Incoviba\Service\Contabilidad\Cartola\Security::class)) + ->register('itau', $container->get(Incoviba\Service\Contabilidad\Cartola\Itau::class)) + ->register('santander', $container->get(Incoviba\Service\Contabilidad\Cartola\Santander::class)) + ->register('bci', $container->get(Incoviba\Service\Contabilidad\Cartola\BCI::class)); }, Incoviba\Common\Define\Contabilidad\Exporter::class => function(ContainerInterface $container) { return $container->get(Incoviba\Service\Contabilidad\Exporter\Nubox::class); }, Incoviba\Service\Contabilidad\Exporter\Nubox::class => function(ContainerInterface $container) { - return new Incoviba\Service\Contabilidad\Exporter\Nubox($container->get(\Incoviba\Repository\Contabilidad\CentroCosto::class), + return new Incoviba\Service\Contabilidad\Exporter\Nubox($container->get(Incoviba\Repository\Contabilidad\CentroCosto::class), $container->get('folders')->get('uploads')); }, Incoviba\Service\Contabilidad\Nubox::class => function(ContainerInterface $container) { return new Incoviba\Service\Contabilidad\Nubox( $container->get(Psr\Log\LoggerInterface::class), - $container->get(\Incoviba\Repository\Contabilidad\Nubox::class), + $container->get(Incoviba\Repository\Contabilidad\Nubox::class), $container->get(Incoviba\Service\Redis::class), new GuzzleHttp\Client(), $container->get(Psr\Http\Message\RequestFactoryInterface::class), diff --git a/app/src/Middleware/Errors.php b/app/src/Middleware/Errors.php index f30df46..20f0565 100644 --- a/app/src/Middleware/Errors.php +++ b/app/src/Middleware/Errors.php @@ -18,7 +18,7 @@ class Errors try { return $handler->handle($request); } catch (Exception $exception) { - $this->logger->notice($exception); + $this->logger->warning($exception); } catch (Error $error) { $this->logger->error($error); } diff --git a/app/src/Service/Redis.php b/app/src/Service/Redis.php index d8d61ce..5f85f0e 100644 --- a/app/src/Service/Redis.php +++ b/app/src/Service/Redis.php @@ -1,12 +1,12 @@