ConsoleLoggerServiceProvider
This service provider makes it easy to show log messages from services in the console,
without having to inject an instance of OutputInterface into the services. This
requires version >=2.4 of Symfony Components. More info about the change is at the
Symfony Blog., (*1)
In your console application, you can now do something like this:, (*2)
use Symfony\Component\Console\Application;
$app = require 'app.php';
$console = new Application('My Console Application', '1.0');
// You should only register this service provider when running commands
$app->register(new \glen\ConsoleLoggerServiceProvider());
$console->addCommands(
array(
//...
)
);
$console->run($app['console.input'], $app['console.output']);
You will still use the normal OutputInterface instance for command feedback
in your commands, but you will now also get output from anything your services
are logging., (*3)
The minimum logging level at which this handler will be triggered depends on the
verbosity setting of the console output. The default mapping is:
- OutputInterface::VERBOSITY_NORMAL will show all WARNING and higher logs
- OutputInterface::VERBOSITY_VERBOSE (-v) will show all NOTICE and higher logs
- OutputInterface::VERBOSITY_VERY_VERBOSE (-vv) will show all INFO and higher logs
- OutputInterface::VERBOSITY_DEBUG (-vvv) will show all DEBUG and higher logs, i.e. all logs, (*4)
This mapping can be customized with the logger.console_logger.handler.verbosity_level_map constructor parameter:, (*5)
$app->register(new ConsoleLoggerServiceProvider(), [
'logger.console_logger.handler.verbosity_level_map' => array(
OutputInterface::VERBOSITY_QUIET => Logger::ERROR,
OutputInterface::VERBOSITY_NORMAL => Logger::INFO,
OutputInterface::VERBOSITY_VERBOSE => Logger::NOTICE,
OutputInterface::VERBOSITY_VERY_VERBOSE => Logger::INFO,
OutputInterface::VERBOSITY_DEBUG => Logger::DEBUG,
),
]);