stagerightlabs / command-line-logger
Write log messages to the command line while respecting output verbosity
Requires
- php: ^8.2
- illuminate/console: ^11.0
- illuminate/support: ^11.0
- monolog/monolog: ^3.8
- symfony/var-dumper: ^7.2
README
Write log messages to the command line while respecting output verbosity
Artisan commands accepts 'verbosity' level flags which indicate the level of desired output: -v
, -vv
and -vvv
. These come from the underlying Symfony/Console package and are often overlooked in the Laravel ecosystem. Respecting verbosity can be rather cumbersome and adds noise to your code:
if ($this->getOutput()->isDebug()) { $this->info('To an old pond'); } if ($this->getOutput()->isVeryVerbose()) { $this->info('A frog leaps in'); } if ($this->getOutput()->isVerbose()) { $this->info('And the sound of the water'); } $this->info('- Matsu Basho');
The goal of this package is to streamline command output while still respecting verbosity flags. We do that by creating a console
log channel and sending log messages to the command line rather than using the native Artisan output helpers such as info()
and error()
.
With this package installed and configured, the above example would instead look like this:
Log::debug('To an old pond'); Log::info('A frog leaps in'); Log::notice('And the sound of the water'); Log::warning('- Matsu Basho');
When you call the command those messages would appear in the console output based on the verbosity flag provided:
When combined with a log stack the output will also be logged to those other channels as well, which is an added bonus.
This package is an implementation of the Symfony Monolog Bridge Console Handler for Laravel.
Installation
You can install the package via composer:
composer require stagerightlabs/command-line-logger
Make sure you do not have an existing log channel called "console" otherwise there may be conflicts.
After installing the package you will need to add the "console" destination channel to your logging config. This can be done in a .env
file:
LOG_CHANNEL=stack
LOG_STACK=single,console
You could also make this change in the config/logging.php
file:
'stack' => [ 'driver' => 'stack', 'channels' => ['single', 'console'], 'ignore_exceptions' => false, ],
You don't need to use the "console" channel with a stack but it can be helpful.
Usage
Instead of writing console output directly from the Artisan command, you should now write to the logs instead:
// Instead of this $this->info('Matsu Basho'); // Do this Log::info('Matsu Basho');
These messages will appear in the console depending on the log level and the verbosity settings given to the command. See the above table for more details.
Changelog
Please see CHANGELOG for more information what has changed recently.
Contributing
Please see CONTRIBUTING for details.
Security
If you discover any security related issues, please email ryan@stagerightlabs.com instead of using the issue tracker.
Credits
The original idea comes from the Symfony Monolog Bridge. More information in the Symfony Docs.
For this version:
License
The Apache License 2. Please see License File for more information.
Laravel Package Boilerplate
This package was generated using the Laravel Package Boilerplate.