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.1
Install monolog-colored-line-formatter
, compatible with Monolog 2.x:
composer require bramus/monolog-colored-line-formatter ~3.0.0
Install monolog-colored-line-formatter
, compatible with Monolog 1.x:
composer require bramus/monolog-colored-line-formatter ~2.0
Create 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.