devengine/monolog-colored-line-formatter

Monolog 的彩色行格式化工具

3.0.6 2021-12-02 15:34 UTC

This package is auto-updated.

Last update: 2024-09-29 05:57:03 UTC


README

Build Status Source Supported PHP Versions Version Downloads License

由 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 7.2 或更高版本
  • Monolog 2.0 或更高版本

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

安装

可以使用 Composer 进行安装。

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

composer require bramus/monolog-colored-line-formatter ~3.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

Monolog Colored Line Formatter

颜色方案:TrafficLight

Monolog Colored Line Formatter

激活颜色方案

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

要激活颜色方案,请将其作为 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 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(),
        ));
    }
}

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

单元测试

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

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

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

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

许可证

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