bramus / monolog-colored-line-formatter
Monolog 的彩色行格式化工具
Requires
- php: ^8.1
- bramus/ansi-php: ^3.0.3
- monolog/monolog: ~3.0
Requires (Dev)
- phpunit/phpunit: ~9.6
README
由 Bramus 构建的具有颜色支持的 Monolog 格式化工具 - https://www.bram.us/
关于
bramus/monolog-colored-line-formatter
是一个用于与 Monolog 一起使用的格式化工具。它通过添加颜色支持增强了 Monolog LineFormatter。为了实现这一点,bramus/monolog-colored-line-formatter
使用 ANSI 转义序列 - 由 bramus/ansi-php
提供 - 这使它在基于文本的终端(如 shell)上使用时非常完美。
bramus/monolog-colored-line-formatter
包含默认的颜色方案,但可以根据您的需求进行调整。
先决条件/需求
- PHP 8.1 或更高版本
- Monolog 3.0 或更高版本
寻找与 Monolog 1.x 兼容的版本?请查看 monolog-1.x
分支。与 Monolog 1.x 兼容的 monolog-colored-line-formatter
版本是 ~2.0
寻找与 Monolog 2.x 兼容的版本?请查看 monolog-2.x
分支。与 Monolog 1.x 兼容的 monolog-colored-line-formatter
版本是 ~3.0.0
安装
可以使用 Composer 进行安装。
安装与 Monolog 3.x 兼容的 monolog-colored-line-formatter
composer require bramus/monolog-colored-line-formatter ~3.1
安装与 Monolog 2.x 兼容的 monolog-colored-line-formatter
composer require bramus/monolog-colored-line-formatter ~3.0.0
安装与 Monolog 1.x 兼容的 monolog-colored-line-formatter
composer require bramus/monolog-colored-line-formatter ~2.0
使用方法
创建 \Bramus\Monolog\Formatter\ColoredLineFormatter
的实例,并将其设置为与您的 \Monolog\Logger
实例一起使用的 \Monolog\Handler\StreamHandler
的格式化工具。
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.');
颜色方案
可用颜色方案
颜色方案:DefaultScheme
颜色方案:TrafficLight
激活颜色方案
颜色方案定义为类。如果您不提供任何颜色方案,将使用默认方案。
要激活颜色方案,请将其作为 ColoredLineFormatter
构造函数的第一个参数传递。所有后续参数都是 \Monolog\Formatter\LineFormatter
类所需的参数。
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);
或者,也可以使用 ColoredLineFormatter
实例的 setColorScheme()
方法激活它。
创建您自己的自定义颜色方案
要定义自己的颜色方案,请创建一个实现了 \Bramus\Monolog\Formatter\ColorSchemes\ColorSchemeInterface
接口的类。为了使事情更加简单,定义了一个 trait ColorSchemeTrait
。
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->value => $this->ansi->color([SGR::COLOR_FG_WHITE])->get(), Level::Info->value => $this->ansi->color([SGR::COLOR_FG_GREEN])->get(), Level::Notice->value => $this->ansi->color([SGR::COLOR_FG_CYAN])->get(), Level::Warning->value => $this->ansi->color([SGR::COLOR_FG_YELLOW])->get(), Level::Error->value => $this->ansi->color([SGR::COLOR_FG_RED])->get(), Level::Critical->value => $this->ansi->color([SGR::COLOR_FG_RED])->underline()->get(), Level::Alert->value => $this->ansi->color([SGR::COLOR_FG_WHITE, SGR::COLOR_BG_RED_BRIGHT])->get(), Level::Emergency->value => $this->ansi->color([SGR::COLOR_BG_RED_BRIGHT])->blink()->color([SGR::COLOR_FG_WHITE])->get(), )); } }
请参阅 bramus/ansi-php 文档 以定义您自己的样式和颜色。
单元测试
bramus/monolog-colored-line-formatter
附带使用 PHPUnit 的单元测试。
-
如果已全局安装 PHPUnit,则运行
phpunit
以运行测试。 -
如果没有全局安装 PHPUnit,则通过运行
composer install --dev
在本地通过 composer 安装它。通过调用vendor/bin/phpunit
来运行测试本身。
单元测试也自动在 GitHub Actions 上运行
许可证
bramus/monolog-colored-line-formatter
在 MIT 公共许可证下发布。有关详细信息,请参阅所附 LICENSE.txt
文件。