bramus/monolog-colored-line-formatter

Monolog 的彩色行格式化工具

3.1.2 2023-08-18 13:44 UTC

This package is auto-updated.

Last update: 2024-09-10 10:31:31 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 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

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 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 文件。