niels-nijens/enhances-console-logging

Components to enhance Symfony console & stdout logging.

1.0.1 2020-08-05 06:40 UTC

This package is auto-updated.

Last update: 2024-03-05 14:36:02 UTC


README

Latest version on Packagist Software License Build Status Coverage Status Code Quality

Components to enhance Symfony console & stdout logging.

Installation using Composer

Run the following command to add the package to the composer.json of your project:

composer require niels-nijens/enhances-console-logging

Usage

ProgressBarConsoleLogger

The ProgressBarConsoleLogger allows you to log and show progress in a console without directly injecting a ProgressBar into your domain components handling the progression. Instead, you are able to inject logging into those components. This allows you to not only log to the console/stdout, but also to other logging mechanisms (eg. a file).

Logging to both a progress bar and another logging mechanism can be achieved by injecting/decorating an existing PSR-3 logger, like Monolog.

The ProgressBarConsoleLogger adheres to the PSR-3 logging specification and as such implements the Psr\Log\LoggerInterface.

<?php

declare(strict_types=1);

use Nijens\EnhancesConsoleLogging\ProgressBar\LogContext;
use Nijens\EnhancesConsoleLogging\ProgressBar\ProgressBarConsoleLogger;
use Psr\Log\LoggerInterface;
use Symfony\Component\Console\Helper\ProgressBar;
use Symfony\Component\Console\Output\OutputInterface;

/** @var $monolog LoggerInterface */
/** @var $output OutputInterface */
$progressBar = new ProgressBar($output);

$logger = new ProgressBarConsoleLogger($monolog);
$logger->registerProgressBar(
    'test', // A unique identifier to reference the progress bar through the log context.
    $progressBar
);

$logger->info(
    'This message will be set on the progress bar.',
    [
        LogContext::PROGRESS_IDENTIFIER_KEY => 'test', // The unique identifier.
        LogContext::PROGRESS_INCREMENT_KEY => 0, // Allows incrementing the max steps. (optional)
        LogContext::PROGRESS_ADVANCE_KEY => 0, // Allows advancing the steps. (optional)
    ]
);

Testing and code standards

Unit tests can be executed by running the following command:

composer test

Code style can be fixed or validated by running one of the following commands:

composer cs-fixer || composer cs-validate

Security

If you discover any security related issues, please email nijens.niels+security [at] gmail.com instead of using the issue tracker.

Credits

License

This package is licensed under the MIT License. Please see the LICENSE file for more information.