function(ContainerInterface $container) { $minLogLevel = Monolog\Level::Debug; if ($container->has('DEBUG') and $container->get('DEBUG') === 'false') { $minLogLevel = Monolog\Level::Warning; } $handlers = []; switch($minLogLevel) { case Monolog\Level::Debug: $handlers []= new Monolog\Handler\FilterHandler( ($container->has('ENVIRONMENT') and $container->get('ENVIRONMENT') === 'development') ? (new Monolog\Handler\StreamHandler('/logs/debug.log')) ->setFormatter($container->get(Monolog\Formatter\LineFormatter::class)) : (new Monolog\Handler\RotatingFileHandler('/logs/debug.log', 10)) ->setFormatter(new Monolog\Formatter\LineFormatter(null, null, false, false, true)), Monolog\Level::Debug, Monolog\Level::Debug, false ); case Monolog\Level::Info: case Monolog\Level::Notice: $handlers []= new Monolog\Handler\FilterHandler( ($container->has('ENVIRONMENT') and $container->get('ENVIRONMENT') === 'development') ? (new Monolog\Handler\StreamHandler('/logs/notices.log')) ->setFormatter($container->get(Monolog\Formatter\LineFormatter::class)) : (new Monolog\Handler\RotatingFileHandler('/logs/info.log', 10)) ->setFormatter(new Monolog\Formatter\LineFormatter(null, null, false, false, true)), Monolog\Level::Info, Monolog\Level::Notice, false ); case Monolog\Level::Warning: case Monolog\Level::Error: $handlers []= new Monolog\Handler\FilterHandler( ($container->has('ENVIRONMENT') and $container->get('ENVIRONMENT') === 'development') ? (new Monolog\Handler\StreamHandler('/logs/error.log')) ->setFormatter($container->get(Monolog\Formatter\LineFormatter::class)) : (new Monolog\Handler\RotatingFileHandler('/logs/error.log', 10)) ->setFormatter($container->get(Monolog\Formatter\LineFormatter::class)), Monolog\Level::Warning, Monolog\Level::Error, false ); case Monolog\Level::Critical: case Monolog\Level::Alert: case Monolog\Level::Emergency: $handlers []= new Monolog\Handler\FilterHandler( ($container->has('ENVIRONMENT') and $container->get('ENVIRONMENT') === 'development') ? (new Monolog\Handler\StreamHandler('/logs/critical.log')) ->setFormatter($container->get(Monolog\Formatter\LineFormatter::class)) : (new Monolog\Handler\RotatingFileHandler('/logs/critical.log', 10)) ->setFormatter($container->get(Monolog\Formatter\LineFormatter::class)), Monolog\Level::Critical ); } return new Monolog\Logger('incoviba', $handlers, [ $container->get(Monolog\Processor\PsrLogMessageProcessor::class), $container->get(Monolog\Processor\IntrospectionProcessor::class), $container->get(Monolog\Processor\MemoryUsageProcessor::class), $container->get(Monolog\Processor\MemoryPeakUsageProcessor::class) ], $container->get(DateTimeZone::class)); }, 'LoopLogger' => function(ContainerInterface $container) { return new Monolog\Logger('loop', [ new Monolog\Handler\FilterHandler( ($container->has('ENVIRONMENT') and $container->get('ENVIRONMENT') === 'development') ? new Monolog\Handler\StreamHandler('/logs/loop-error.log') : new Monolog\Handler\RotatingFileHandler('/logs/loop-error.log', 10), Monolog\Level::Error ), new Monolog\Handler\FilterHandler( ($container->has('ENVIRONMENT') and $container->get('ENVIRONMENT') === 'development') ? new Monolog\Handler\StreamHandler('/logs/loop.log') : new Monolog\Handler\RotatingFileHandler('/logs/loop.log', 10), Monolog\Level::Notice, Monolog\Level::Warning ), new Monolog\Handler\FilterHandler( ($container->has('ENVIRONMENT') and $container->get('ENVIRONMENT') === 'development') ? new Monolog\Handler\StreamHandler('/logs/loop-debug.log') : new Monolog\Handler\RotatingFileHandler('/logs/loop-debug.log', 10), Monolog\Level::Debug, Monolog\Level::Debug ) ], [], $container->get(DateTimeZone::class)); } ];