function(ContainerInterface $container) { return [ $container->get(Monolog\Processor\PsrLogMessageProcessor::class), $container->get(Monolog\Processor\IntrospectionProcessor::class), $container->get(Monolog\Processor\MemoryPeakUsageProcessor::class), ]; }, 'request_log_handler' => function(ContainerInterface $container) { return (new Monolog\Handler\RotatingFileHandler(implode(DIRECTORY_SEPARATOR, [$container->get('logs_folder'), 'requests.log']))); }, 'request_logger' => function(ContainerInterface $container) { return new Monolog\Logger( 'request_logger', [$container->get('request_log_handler')], $container->get('log_processors') ); }, 'file_log_handler' => function(ContainerInterface $container) { return new Monolog\Handler\FilterHandler( (new Monolog\Handler\RotatingFileHandler($container->get('log_file'))) ->setFormatter(new Monolog\Formatter\LineFormatter(null, null, true)), Monolog\Level::Error ); }, 'debug_log_handler' => function(ContainerInterface $container) { return new Monolog\Handler\FilterHandler( (new Monolog\Handler\RotatingFileHandler(implode(DIRECTORY_SEPARATOR, [$container->get('logs_folder'), 'debug.log']))) ->setFormatter(new Monolog\Formatter\LineFormatter(null, null, true)), Monolog\Level::Debug, Monolog\Level::Warning ); }, Psr\Log\LoggerInterface::class => function(ContainerInterface $container) { return $container->get('file_logger'); }, 'file_logger' => function(ContainerInterface $container) { return new Monolog\Logger( 'file', [ $container->get('file_log_handler'), $container->get('debug_log_handler') ], $container->get('log_processors') ); }, ];