function(ContainerInterface $container) { return new Monolog\Logger('file', [ new Monolog\Handler\FilterHandler( new Monolog\Handler\RotatingFileHandler($container->get('debug_logs_file')), Monolog\Level::Debug, Monolog\Level::Warning ), new Monolog\Handler\FilterHandler( new Monolog\Handler\RotatingFileHandler($container->get('error_logs_file')), Monolog\Level::Error ) ], [ new Monolog\Processor\PsrLogMessageProcessor(), new Monolog\Processor\IntrospectionProcessor(), new Monolog\Processor\MemoryUsageProcessor(), new Monolog\Processor\MemoryPeakUsageProcessor(), ]); }, Psr\Http\Client\ClientInterface::class => function(ContainerInterface $container) { return new GuzzleHttp\Client([ 'base_uri' => $container->get('uri') ]); }, ProVM\Service\Ipify::class => function(ContainerInterface $container) { return new ProVM\Service\Ipify( $container->get(Psr\Http\Client\ClientInterface::class), $container->get('uri'), $container->get(Psr\Log\LoggerInterface::class) ); }, ProVM\Service\Connector::class => function(ContainerInterface $container) { $database = $container->get('database'); return new ProVM\Service\Connector( $database->get('host'), $database->get('name'), $database->get('user')->get('name'), $database->get('user')->get('password'), $container->get('retries'), $container->get(Psr\Log\LoggerInterface::class) ); }, ProVM\Service\Repository::class => function(ContainerInterface $container) { return new ProVM\Service\Repository( $container->get(ProVM\Service\Connector::class), $container->get('database')->get('table'), $container->get(Psr\Log\LoggerInterface::class) ); } ];