alexandre-daubois/monolog-processor-collection

1.3.2 2023-12-23 17:55 UTC

README

Minimum PHP Version CI Latest Stable Version License

欢迎使用Monolog处理器集合(MPC)——专为增强与著名Monolog库相结合的日志记录而设计的终极处理器套件。此工具包精心制作,以与PHP 8.1+无缝集成,确保您的日志记录以最小的开销捕获所需的详细信息。

MPC是为那些对日志有更高要求的开发者而设计的。无论是追踪难以捉摸的bug还是监控实时生产环境,处理器通过添加宝贵的上下文来丰富日志条目,将普通日志转变为丰富的、可操作的数据库。

MPC兼容网络服务器的worker模式,因为相关的处理器实现了ResettableInterface

可用处理器

该软件包提供以下处理器

  • BacktraceProcessor将堆栈跟踪添加到日志记录
  • ClientIpProcessor将客户端IP地址添加到日志记录
  • EnvVarProcessor将一个或多个环境变量的值添加到日志记录
  • HighResolutionTimestampProcessor将高精度时间添加到日志记录
  • IsHttpsProcessor将一个表示请求是否为安全HTTP请求的布尔值添加到日志记录
  • PhpIniValueProcessor将一个或多个PHP ini设置的值添加到日志记录
  • ProtocolVersionProcessor将HTTP协议版本添加到日志记录
  • RequestSizeProcessor将请求的大小添加到日志记录,包括头信息,以字节为单位
  • ResourceUsagesProcessor将资源使用情况添加到日志记录,如getrusage()返回
  • SapiNameProcessor将SAPI名称添加到日志记录
  • SessionIdProcessor将会话ID添加到日志记录,如果没有活动会话,则为null
  • UuidProcessor将UUID v7添加到日志记录以跟踪同一请求期间触发的记录

安装

安装MPC的推荐方法是通过Composer

composer require alexandre-daubois/monolog-processor-collection

使用方法

所有处理器都可以像使用任何其他Monolog处理器一样使用。例如

use Monolog\Logger;

$logger = new Logger('name');
$logger->pushProcessor(new BacktraceProcessor());

一些处理器,如EnvVarProcessorPhpIniValueProcessor,需要您指定更多参数。例如

use Monolog\Logger;

$logger = new Logger('name');
$logger->pushProcessor(new EnvVarProcessor(['APP_ENV', 'APP_DEBUG']));

与Symfony和MonologBundle的集成

您可以通过向您的config/packages/monolog.php文件添加以下配置来将这些处理器注册到Symfony和MonologBundle中使用

use Monolog\Processor\ProcessorInterface;
use MonologProcessorCollection\BacktraceProcessor;
use MonologProcessorCollection\EnvVarProcessor;
use MonologProcessorCollection\ProtocolVersionProcessor;
use MonologProcessorCollection\EnvVarProcessor;
use MonologProcessorCollection\SapiNameProcessor;

return static function (ContainerConfigurator $configurator): void {
    // ...

    // register as many processors as you like, but keep in mind that
    // each processor is called for each log record
    $services = $configurator->services();
    $services
        ->set(BacktraceProcessor::class)
        ->set(EnvVarProcessor::class)->args(['APP_ENV'])
        ->set(ProtocolVersionProcessor::class)
        ->set(SapiNameProcessor::class);

    // ...
};

如果您不使用自动配置,您需要将处理器标记为monolog.processor

return static function (ContainerConfigurator $configurator): void {
    // ...

    $services = $configurator->services();
    $services
        ->set(BacktraceProcessorAlias::class)
            ->tag('monolog.processor', ['handler' => 'main'])
        ->set(EnvVarProcessor::class)->args(['APP_ENV'])
            ->tag('monolog.processor', ['handler' => 'main']);

    // ...
};

您可以使用YAML实现相同的配置

# config/packages/monolog.yaml
services:
    MonologProcessorCollection\BacktraceProcessor:
        tags:
            - { name: monolog.processor, handler: main }
    MonologProcessorCollection\EnvVarProcessor:
        arguments:
            - APP_ENV
        tags:
            - { name: monolog.processor, handler: main }

或XML

<!-- config/packages/monolog.xml -->

<!-- ... -->

<service id="MonologProcessorCollection\BacktraceProcessor" public="false">
    <tag name="monolog.processor" handler="main" />
</service>
<service id="MonologProcessorCollection\EnvVarProcessor" public="false">
    <argument>APP_ENV</argument>
    <tag name="monolog.processor" handler="main" />
</service>