Stars: 129
Forks: 18
Pull Requests: 14
Issues: 14
Watchers: 5
Last Updated: 2023-08-18 13:44:29
Colored/ANSI Line Formatter for Monolog
License: MIT License
Languages: PHP
A Formatter for Monolog with color support Built by Bramus! - https://www.bram.us/
bramus/monolog-colored-line-formatter is a formatter for use with Monolog. It augments the Monolog LineFormatter by adding color support. To achieve this bramus/monolog-colored-line-formatter uses ANSI Escape Sequences – provided by bramus/ansi-php – which makes it perfect for usage on text based terminals (viz. the shell).
bramus/monolog-colored-line-formatter ships with a default color scheme, yet it can be adjusted to fit your own needs.
Looking for a version compatible with Monolog 1.x? Check out the monolog-1.x branch then. The version of monolog-colored-line-formatter that is compatible with Monolog 1.x, is monolog-colored-line-formatter version ~2.0
Looking for a version compatible with Monolog 2.x? Check out the monolog-2.x branch then. The version of monolog-colored-line-formatter that is compatible with Monolog 1.x, is monolog-colored-line-formatter version ~3.0.0
Installation is possible using Composer.
Install monolog-colored-line-formatter, compatible with Monolog 3.x:
composer require bramus/monolog-colored-line-formatter ~3.1Install monolog-colored-line-formatter, compatible with Monolog 2.x:
composer require bramus/monolog-colored-line-formatter ~3.0.0Install monolog-colored-line-formatter, compatible with Monolog 1.x:
composer require bramus/monolog-colored-line-formatter ~2.0Create an instance of \Bramus\Monolog\Formatter\ColoredLineFormatter and set it as the formatter for the \Monolog\Handler\StreamHandler that you use with your \Monolog\Logger instance.
use \Monolog\Logger;
use \Monolog\Handler\StreamHandler;
use \Bramus\Monolog\Formatter\ColoredLineFormatter;
$log = new Logger('DEMO');
$handler = new StreamHandler('php://stdout', Logger::WARNING);
$handler->setFormatter(new ColoredLineFormatter());
$log->pushHandler($handler);
$log->addError('Lorem ipsum dolor sit amet, consectetur adipiscing elit.');Color Schemes are defined as classes. If you do not provide any color scheme the default one will be used.
To activate a color scheme pass it as the first argument of the ColoredLineFormatter Constructor. All successive arguments are the ones as required by the \Monolog\Formatter\LineFormatter class.
use \Monolog\Logger;
use \Monolog\Handler\StreamHandler;
use \Bramus\Monolog\Formatter\ColoredLineFormatter;
use \Bramus\Monolog\Formatter\ColorSchemes\TrafficLight;
$log = new Logger('DEMO');
$handler = new StreamHandler('php://stdout', Logger::WARNING);
$handler->setFormatter(new ColoredLineFormatter(new TrafficLight()));
$log->pushHandler($handler);Alternatively it's also possible to activate it using the setColorScheme() method of a ColoredLineFormatter instance.
To define your own color scheme make a class that implements the \Bramus\Monolog\Formatter\ColorSchemes\ColorSchemeInterface interface. To make things more easy a trait ColorSchemeTrait is defined.
namespace Bramus\Monolog\Formatter\ColorSchemes;
use Monolog\Logger;
use Monolog\Level;
use Bramus\Ansi\Ansi;
use Bramus\Ansi\ControlSequences\EscapeSequences\Enums\SGR;
class TrafficLight implements ColorSchemeInterface
{
/**
* Use the ColorSchemeTrait and alias its constructor
*/
use ColorSchemeTrait {
ColorSchemeTrait::__construct as private __constructTrait;
}
/**
* [__construct description]
*/
public function __construct()
{
// Call Trait Constructor, so that we have $this->ansi available
$this->__constructTrait();
// Our Color Scheme
$this->setColorizeArray(array(
Level::Debug => $this->ansi->color(SGR::COLOR_FG_WHITE)->get(),
Level::Info => $this->ansi->color(SGR::COLOR_FG_GREEN)->get(),
Level::Notice => $this->ansi->color(SGR::COLOR_FG_CYAN)->get(),
Level::Warning => $this->ansi->color(SGR::COLOR_FG_YELLOW)->get(),
Level::Error => $this->ansi->color(SGR::COLOR_FG_RED)->get(),
Level::Critical => $this->ansi->color(SGR::COLOR_FG_RED)->underline()->get(),
Level::Alert => $this->ansi->color([SGR::COLOR_FG_WHITE, SGR::COLOR_BG_RED_BRIGHT])->get(),
Level::Emergency => $this->ansi->color(SGR::COLOR_BG_RED_BRIGHT)->blink()->color(SGR::COLOR_FG_WHITE)->get(),
));
}
}Please refer to the bramus/ansi-php documentation to define your own styles and colors.
bramus/monolog-colored-line-formatter ships with unit tests using PHPUnit.
If PHPUnit is installed globally run phpunit to run the tests.
If PHPUnit is not installed globally, install it locally through composer by running composer install --dev. Run the tests themselves by calling vendor/bin/phpunit.
Unit tests are also automatically run on GitHub Actions
bramus/monolog-colored-line-formatter is released under the MIT public license. See the enclosed LICENSE.txt for details.