trash-panda / progress-bar-log
Component to display a progress bar and last X logs at the same time
Installs: 18 531
Dependents: 0
Suggesters: 0
Security: 0
Stars: 41
Watchers: 6
Forks: 5
Open Issues: 0
Requires
- php: ^7 | ^7.1
- psr/log: ^1.0
- symfony/console: ^2.6 | ^3.0 | ^4.0
Requires (Dev)
- phpunit/phpunit: ^6.0
README
Display a progress bar and a portion of a log at the same time on the CLI!
Click the image above to see it in action.
Installation
$ composer require trash-panda/progress-bar-log
Use cases
Originally I wanted this for long running import/export work. Being able to see a subset of the most recent log entries and also still see the progress and memory usage without scrolling the terminal. I figured it might be useful for some other people too.
Usage
<?php use Psr\Log\LogLevel; use TrashPanda\ProgressBarLog\ProgressBarLog; require_once __DIR__ . '/vendor/autoload.php'; //The first parameter is the number of log lines to be displayed. The newest entries will be displayed - like a tail. //The second parameter is the maximum number of steps for the progress bar $progressLog = new ProgressBarLog(6, 10); $progressLog->start(); //advance the progress bar by one $progressLog->advance(); //Add a log line - the first parameter is a psr/log severity constant //you can pass whatever you want there - but if it is a psr/log constant then the severity is colored accordingly $progressLog->addLog(LogLevel::CRITICAL, 'Some mission critical error');
See example.php
for a working script:
git clone git@github.com:AydinHassan/progress-bar-log.git
cd progress-bar-log
php example.php
Customising the progress bar
The underlying progress bar is an instance of \Symfony\Component\Console\Helper\ProgressBar
.
You can modify the settings of the progress bar by getting access to the instance via getProgressBar()
:
<?php use TrashPanda\ProgressBarLog\ProgressBarLog; require_once __DIR__ . '/vendor/autoload.php'; $progressLog = new ProgressBarLog(6, 10); $progressLog->getProgressBar()->setFormat('normal'); $progressLog->getProgressBar()->setBarWidth(50); $progressLog->start();
Running unit tests
$ composer test