auron-consulting-oss/php-console-logger

PHP 简单的 PSR-3 兼容控制台日志记录器

v2.0.0 2019-11-12 17:06 UTC

This package is auto-updated.

Last update: 2024-09-17 23:47:48 UTC


README

Build status Code coverage

PHP Console Logger

PhpConsoleLogger 是一个小的类,它通过一个与 PSR-3 兼容的接口在控制台中显示消息。这意味着您可以将其用作与 PSR-3 LoggerAwareInterface 兼容的代码的日志记录器,然后就可以继续使用了。

由于 shell 特定的颜色命令,此日志记录器主要用于命令行脚本。

您可能想在那些我们都用来执行迁移、数据修复等操作的命令行脚本上使用它,而无需添加完整的 PHP 控制台套件。

要求

PHP 7.2+ ext-json

安装

首选方法是通过 composer,通过 composer require auron-consulting-oss/php-console-logger。您始终可以手动下载和安装,但您需要将 psr/log 和 PhpConsoleLogger 强行整合到您的自动加载机制中。

升级

如果从 1.x 升级,日志记录器现在将默认在日志消息旁边打印时间戳。您可以通过将 false 传递给构造函数来禁用它。

用法

// No timestamps
$consoleLogger = new AuronConsultingOSS\Logger\Console(false);

// With timestamps (default)
$console = new AuronConsultingOSS\Logger\Console(true);

[ ... ]

// Then, simply use like a regular PSR-3 logger
$console->info('Whatever', ['extra_stuff' => 'maybe']);

贡献

复制此仓库,做您的事情,发送 PR。测试是强制性的

  • PHP 单元测试覆盖率必须为 100%
  • Infection MSI 必须为 100%
  • PHPStan 必须没有错误

提供的 Makefile 包含所有基本测试目标,并在 CI 中使用。

示例

我提供了一个示例(以下为代码和输出),您可以通过运行 php example/example.php 来运行它。

<?php
require '../vendor/autoload.php';
require 'ExampleClass.php';

$console = new AuronConsultingOSS\Logger\Console();

// Straight string messages
$console->info('This is an info message');
$console->notice('This is a notice message');
$console->debug('This is a debug message');
$console->warning('This is a warning message');
$console->alert('This is an alert message');
$console->error('This is an error message');
$console->emergency('This is an emergency message');
$console->critical('This is a critical message');

// Messages with exceptions and traces
try {
    $exampleClass = new ExampleClass();
    $exampleClass->prepare();
} catch (Exception $ex) {
    $console->error('Whoopsies', ['exception' => $ex]);
}

// Messages with random data
$console->warning('Some data on context', ['foo' => 'bar']);

// Messages with random data plus exception
$console->alert('Some data on context, as well as an exception', ['foo' => 'bar', 'exception' => $ex]);

// Passing on an exception directly as a message (or any object that implements __toString)
$console->debug($ex);

// Since we're PSR-3, we can be injected on objects that understand LoggerAwareInterface - example class does
$exampleClass->setLogger($console);
$exampleClass->runLoggerAwareExample();

// You get the idea
$console->notice('That\'s it.');
$console->info('C\'est fini.');

它看起来像: