stagerightlabs/command-line-logger

Write log messages to the command line while respecting output verbosity

v1.0.0 2025-02-04 21:59 UTC

This package is auto-updated.

Last update: 2025-02-04 22:01:42 UTC


README

Write Laravel log messages to the console

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.