Alexdevid
Alexdevid

Reputation: 48

Symfony3+PHPUnit. How to disable debug log in console?

I think I turned off debug logging everywhere (in config.yml, config_dev, config_test):

monolog:
handlers:
    main:
        type: stream
        path: "%kernel.logs_dir%/%kernel.environment%.log"
        level: debug
        channels: [!event]
    console:
        type: stream
        path: "%kernel.logs_dir%/console.log"
        level: critical
        channels: [!event]

but when I run phpunit it shows me debug log:

[2016-06-19 16:53:29] event.DEBUG: Notified event "{event}" to listener "{listener}". {"event":"kernel.request","listener":"Symfony\\Component\\HttpKernel\\EventListener\\DebugHandlersListener::configure"} []
[2016-06-19 16:53:29] event.DEBUG: Notified event "{event}" to listener "{listener}". {"event":"kernel.request","listener":"Symfony\\Component\\HttpKernel\\EventListener\\DumpListener::configure"} []
[2016-06-19 16:53:29] event.DEBUG: Notified event "{event}" to listener "{listener}". {"event":"kernel.request","listener":"Symfony\\Bundle\\FrameworkBundle\\EventListener\\TestSessionListener::onKernelRequest"} []
[2016-06-19 16:53:29] event.DEBUG: Notified event "{event}" to listener "{listener}". {"event":"kernel.request","listener":"Symfony\\Bundle\\FrameworkBundle\\EventListener\\SessionListener::onKernelRequest"} []
[2016-06-19 16:53:29] event.DEBUG: Notified event "{event}" to listener "{listener}". {"event":"kernel.request","listener":"Symfony\\Component\\HttpKernel\\EventListener\\FragmentListener::onKernelRequest"} []
[2016-06-19 16:53:29] event.DEBUG: Notified event "{event}" to listener "{listener}". {"event":"kernel.request","listener":"Symfony\\Component\\HttpKernel\\EventListener\\RouterListener::onKernelRequest"} []
[2016-06-19 16:53:29] event.DEBUG: Notified event "{event}" to listener "{listener}". {"event":"kernel.request","listener":"Symfony\\Component\\HttpKernel\\EventListener\\LocaleListener::onKernelRequest"} []
[2016-06-19 16:53:29] event.DEBUG: Notified event "{event}" to listener "{listener}". {"event":"kernel.request","listener":"AppBundle\\EventListener\\LocaleListener::onKernelRequest"} []

How to disable it?

Upvotes: 3

Views: 6527

Answers (2)

maddes.h
maddes.h

Reputation: 106

If you try this:

  console:
     type: stream
     path: "%kernel.logs_dir%/console.log"
     level: critical
     channels: []

Then it should be fine. I also had some issues with that, i just commented it out for my needs. If you still want some debugging for doctrine, just put !doctrine in the brackets. If i get you right, thats what you need.

Upvotes: 7

Andrzej Ośmiałowski
Andrzej Ośmiałowski

Reputation: 1494

Test environment seems to run in debug mode which is enabled in the application kernel $kernel = new AppKernel('dev', true); in app_dev.php. Same goes for production evironment with one exception: the second argument should be false, which means that debug mode is disabled.

To get rid of the debug output in the test environment you need to pass the --no-debug flag to your command, example: php bin/console some:command --env=test --no-debug

For PHPUnit it will not work. You may need to override the kernel of your application for dev environment:

Example from Kris Wallsmith blog:

class AppKernel extends Kernel
{
    // ...

    protected function initializeContainer()
    {
        static $first = true;

        if ('test' !== $this->getEnvironment()) {
            parent::initializeContainer();
            return;
        }

        $debug = $this->debug;

        if (!$first) {
            // disable debug mode on all but the first initialization
            $this->debug = false;
        }

        // will not work with --process-isolation
        $first = false;

        try {
            parent::initializeContainer();
        } catch (\Exception $e) {
            $this->debug = $debug;
            throw $e;
        }

        $this->debug = $debug;
    }
}

Upvotes: 3

Related Questions