[GH-ISSUE #1025] How to use monolog in slim3 framework correctly?? #418

Closed
opened 2026-03-04 02:14:53 +03:00 by kerem · 3 comments
Owner

Originally created by @ayushav12 on GitHub (Jul 18, 2017).
Original GitHub issue: https://github.com/Seldaek/monolog/issues/1025

In my app.php file:

use Monolog\Logger;
use Monolog\Handler\StreamHandler;

class App extends \DI\Brifge\Slim\app
{
 public function configureContainer(ContainerBuilder $builder)
 {
  $dependencies = [
      'logger' => function (Container $container) { 
                $logger = new Monolog\Logger('logger');
                $filename = _DIR__ . '/../log/error.log';
                $stream = new Monolog\Handler\StreamHandler($filename, Monolog\Logger::DEBUG);
                $fingersCrossed = new Monolog\Handler\FingersCrossedHandler(
                $stream, Monolog\Logger::ERROR);
                $logger->pushHandler($fingersCrossed);

                return $logger;
            },
  ];
 }
}

In my custom error handler:

class CustomErrorHandler
{
	protected $logger;

	public function __construct(Logger $logger)
	{
		$this->logger = $logger;
	}

	public function __invoke(ServerRequestInterface $request, ResponseInterface $response, $exception)
	{
        $output = ['success'=>0, 'error'=>"Oops! Something's not right "];

        $this->logger->critical($output);
        
		return $response->withStatus(500)
                        ->withHeader('Content-Type', 'application/json')
                        ->write(json_encode($output));
	}
}

When an error is thrown, following message is displayed:

Fatal error: Uncaught Error: Class 'App\Monolog\Logger' not found in C:\xampp\htdocs\backend\app\App.php:103 Stack trace: #0 [internal function]: App\App->App{closure}(Object(DI\Container)) #1 C:\xampp\htdocs\backend\vendor\php-di\invoker\src\Invoker.php(82): call_user_func_array(Object(Closure), Array) #2 C:\xampp\htdocs\backend\vendor\php-di\php-di\src\DI\Definition\Resolver\FactoryResolver.php(81): Invoker\Invoker->call(Object(Closure), Array) #3 C:\xampp\htdocs\backend\vendor\php-di\php-di\src\DI\Definition\Resolver\ResolverDispatcher.php(58): DI\Definition\Resolver\FactoryResolver->resolve(Object(DI\Definition\FactoryDefinition), Array) #4 C:\xampp\htdocs\backend\vendor\php-di\php-di\src\DI\Container.php(287): DI\Definition\Resolver\ResolverDispatcher->resolve(Object(DI\Definition\FactoryDefinition), Array) #5 C:\xampp\htdocs\backend\vendor\php-di\php-di\src\DI\Container.php(124): DI\Container->resolveDefinition(Object(DI\Definition\FactoryDefinition)) #6 C:\xampp\htdocs\backend\app\App.php(95): DI\Container->get('l in C:\xampp\htdocs\backend\app\App.php on line 103

Can anyone help me out as soon as possible??

Originally created by @ayushav12 on GitHub (Jul 18, 2017). Original GitHub issue: https://github.com/Seldaek/monolog/issues/1025 In my app.php file: ``` use Monolog\Logger; use Monolog\Handler\StreamHandler; class App extends \DI\Brifge\Slim\app { public function configureContainer(ContainerBuilder $builder) { $dependencies = [ 'logger' => function (Container $container) { $logger = new Monolog\Logger('logger'); $filename = _DIR__ . '/../log/error.log'; $stream = new Monolog\Handler\StreamHandler($filename, Monolog\Logger::DEBUG); $fingersCrossed = new Monolog\Handler\FingersCrossedHandler( $stream, Monolog\Logger::ERROR); $logger->pushHandler($fingersCrossed); return $logger; }, ]; } } ``` In my custom error handler: ``` class CustomErrorHandler { protected $logger; public function __construct(Logger $logger) { $this->logger = $logger; } public function __invoke(ServerRequestInterface $request, ResponseInterface $response, $exception) { $output = ['success'=>0, 'error'=>"Oops! Something's not right "]; $this->logger->critical($output); return $response->withStatus(500) ->withHeader('Content-Type', 'application/json') ->write(json_encode($output)); } } ``` When an error is thrown, following message is displayed: Fatal error: Uncaught Error: Class 'App\Monolog\Logger' not found in C:\xampp\htdocs\backend\app\App.php:103 Stack trace: #0 [internal function]: App\App->App\{closure}(Object(DI\Container)) #1 C:\xampp\htdocs\backend\vendor\php-di\invoker\src\Invoker.php(82): call_user_func_array(Object(Closure), Array) #2 C:\xampp\htdocs\backend\vendor\php-di\php-di\src\DI\Definition\Resolver\FactoryResolver.php(81): Invoker\Invoker->call(Object(Closure), Array) #3 C:\xampp\htdocs\backend\vendor\php-di\php-di\src\DI\Definition\Resolver\ResolverDispatcher.php(58): DI\Definition\Resolver\FactoryResolver->resolve(Object(DI\Definition\FactoryDefinition), Array) #4 C:\xampp\htdocs\backend\vendor\php-di\php-di\src\DI\Container.php(287): DI\Definition\Resolver\ResolverDispatcher->resolve(Object(DI\Definition\FactoryDefinition), Array) #5 C:\xampp\htdocs\backend\vendor\php-di\php-di\src\DI\Container.php(124): DI\Container->resolveDefinition(Object(DI\Definition\FactoryDefinition)) #6 C:\xampp\htdocs\backend\app\App.php(95): DI\Container->get('l in C:\xampp\htdocs\backend\app\App.php on line 103 Can anyone help me out as soon as possible??
kerem closed this issue 2026-03-04 02:14:53 +03:00
Author
Owner

@Seldaek commented on GitHub (Jul 18, 2017):

Please ask for slim support using slim channels. I can not help as I am not a slim user...

<!-- gh-comment-id:316021815 --> @Seldaek commented on GitHub (Jul 18, 2017): Please ask for slim support using slim channels. I can not help as I am not a slim user...
Author
Owner

@Seldaek commented on GitHub (Jul 18, 2017):

That said the error message looks like you are missing a use Monolog\Logger; statement wherever you're using Monolog\Logger at App.php line 103.

<!-- gh-comment-id:316022232 --> @Seldaek commented on GitHub (Jul 18, 2017): That said the error message looks like you are missing a `use Monolog\Logger;` statement wherever you're using `Monolog\Logger` at App.php line 103.
Author
Owner

@ayushav12 commented on GitHub (Jul 18, 2017):

I have included the line use Monolog\Logger; statement at the beginning of App.php . Then also I get the above error

<!-- gh-comment-id:316028614 --> @ayushav12 commented on GitHub (Jul 18, 2017): I have included the line `use Monolog\Logger;` statement at the beginning of App.php . Then also I get the above error
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
starred/monolog#418
No description provided.