regho/monolog-colored-line-formatter

Monolog的彩色行格式化工具

v0.0.1 2022-12-16 17:55 UTC

This package is not auto-updated.

Last update: 2024-09-22 01:46:34 UTC


README

Build Status Source Supported PHP Versions Version Downloads License

Regho开发的具有颜色支持的Monolog格式化工具 - https://www.bram.us/

关于

Regho/monolog-colored-line-formatter 是用于 Monolog 的格式化工具。它通过添加颜色支持增强了 Monolog LineFormatter。为了实现这一点,Regho/monolog-colored-line-formatter 使用 ANSI 转义序列 - 由 Regho/ansi-php 提供 - 使得它在基于文本的终端(如 shell)上使用非常完美。

Regho/monolog-colored-line-formatter 随附一个默认的颜色方案,但也可以根据您的需求进行调整。

先决条件/需求

  • PHP 7.2 或更高版本
  • Monolog 2.0 或更高版本

寻找与 Monolog 1.x 兼容的版本?请查看 monolog-1.x 分支。与 Monolog 1.x 兼容的 monolog-colored-line-formatter 版本是 monolog-colored-line-formatter 版本 ~2.0

安装

可以使用 Composer 进行安装。

安装与 Monolog 2.x 兼容的 monolog-colored-line-formatter

composer require Regho/monolog-colored-line-formatter ~3.0

安装与 Monolog 1.x 兼容的 monolog-colored-line-formatter

composer require Regho/monolog-colored-line-formatter ~2.0

使用方法

创建 \Regho\Monolog\Formatter\ColoredLineFormatter 的实例,并将其设置为与您的 \Monolog\Logger 实例一起使用的 \Monolog\Handler\StreamHandler 的格式化工具。

use \Monolog\Logger;
use \Monolog\Handler\StreamHandler;
use \Regho\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.');

颜色方案

可用的颜色方案

颜色方案:默认方案

Monolog Colored Line Formatter

颜色方案:交通灯

Monolog Colored Line Formatter

激活颜色方案

颜色方案定义为类。如果您不提供任何颜色方案,则默认方案将被使用。

要激活颜色方案,请将其作为 ColoredLineFormatter 构造函数的第一个参数传递。所有后续参数都是 \Monolog\Formatter\LineFormatter 类所必需的。

use \Monolog\Logger;
use \Monolog\Handler\StreamHandler;
use \Regho\Monolog\Formatter\ColoredLineFormatter;
use \Regho\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() 方法来激活它。

创建自定义颜色方案

要定义自己的颜色方案,请创建一个实现 \Regho\Monolog\Formatter\ColorSchemes\ColorSchemeInterface 接口的面板。为了使事情更简单,定义了一个 trait ColorSchemeTrait

namespace Regho\Monolog\Formatter\ColorSchemes;

use Monolog\Logger;
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(
            Logger::DEBUG => $this->ansi->color(SGR::COLOR_FG_WHITE)->get(),
            Logger::INFO => $this->ansi->color(SGR::COLOR_FG_GREEN)->get(),
            Logger::NOTICE => $this->ansi->color(SGR::COLOR_FG_CYAN)->get(),
            Logger::WARNING => $this->ansi->color(SGR::COLOR_FG_YELLOW)->get(),
            Logger::ERROR => $this->ansi->color(SGR::COLOR_FG_RED)->get(),
            Logger::CRITICAL => $this->ansi->color(SGR::COLOR_FG_RED)->underline()->get(),
            Logger::ALERT => $this->ansi->color(array(SGR::COLOR_FG_WHITE, SGR::COLOR_BG_RED_BRIGHT))->get(),
            Logger::EMERGENCY => $this->ansi->color(SGR::COLOR_BG_RED_BRIGHT)->blink()->color(SGR::COLOR_FG_WHITE)->get(),
        ));
    }
}

请参阅 Regho/ansi-php 的文档 以定义自己的样式和颜色。

单元测试

Regho/monolog-colored-line-formatter 随附使用 PHPUnit 的单元测试。

  • 如果已全局安装 PHPUnit,请运行 phpunit 以运行测试。

  • 如果没有全局安装 PHPUnit,请通过 composer 在本地安装它,运行 composer install --dev。通过调用 vendor/bin/phpunit 运行测试。

单元测试也会自动在 GitHub Actions 上运行

许可证

Regho/monolog-colored-line-formatter 在 MIT 公共许可证下发布。有关详细信息,请参阅附带的 LICENSE.txt 文件。