fluffy/monolog-cascade-namespaced

Monolog 级联扩展允许为特定命名空间/类配置记录器(log4j 风格)

0.1.1 2018-01-15 23:31 UTC

This package is auto-updated.

Last update: 2024-09-06 13:39:52 UTC


README

什么是 Monolog 级联命名空间?

Monolog 级联命名空间是Monolog 级联的一个扩展,允许您为特定命名空间/类配置记录器。

安装

在您的 composer.json 文件中将 monolog-cascade-namespaced 添加为依赖项或运行

$ composer require fluffy/monolog-cascade-namespaced

注意:Monolog 级联需要 PHP 5.3.9 或更高版本。

用法

加载配置(Monolog 级联 支持以下配置格式: ymljsonphp

<?php

use CascadeNamespaced\CascadeNamespaced;

CascadeNamespaced::fileConfig('path/to/some/config.yaml');

然后只需使用您的记录器

CascadeNamespaced::getLogger(get_called_class())->info('Info message.');

注意:为了将来在配置文件中配置此记录器以具有特定配置,您必须在 CascadeNamespaced::getLogger() 方法中传递一个完整的类名。您可以使用 get_called_class() 函数获取完整的类名。

配置

根记录器

在您的级联配置中定义 root 记录器。如果没有为您的命名空间/类定义任何特定记录器,则 CascadeNamespaced::getLogger(get_called_class()) 将返回它。这是您应用程序的默认记录器。如果没有定义 root 记录器,则将返回默认的 Monolog 记录器。

handlers:
    console:
        class: Monolog\Handler\StreamHandler
        stream: php://stdout

loggers:
    root:
        handlers: [console]

命名空间/类特定记录器

假设您有以下类

MyNamespace\Class1
MyNamespace\Class2
MyNamespace\SubNamespace\Class3
MyNamespace\SubNamespace\Class4
AnotherNamespace\Class5

并且您希望将 MyNamespace\SubNamespace 命名空间类的消息记录到 stdout,但将 MyNamespace\Class1MyNamespace\Class2 类的消息记录到两个不同的文件中。这可以通过以下配置完成

handlers:
    file1:
        class: Monolog\Handler\StreamHandler
        stream: log_file_1.log

    file2:
        class: Monolog\Handler\StreamHandler
        stream: log_file_2.log

    console:
        class: Monolog\Handler\StreamHandler
        stream: php://stdout

loggers:
    # Will be used for `AnotherNamespace\Class5` class as a default logger
    # because there are no specific loggers defined for this class.
    root:
        handlers: [console]

    # Will be used for all the classes from `MyNamespace\SubNamespace` namespace.
    MyNamespace\SubNamespace:
        handlers: [console]

    # Will be used for `MyNamespace\Class1` class.
    MyNamespace\Class1:
        handlers: [file1]

    # Will be used for `MyNamespace\Class2` class.
    MyNamespace\Class2:
        handlers: [file2]

对于其他类,CascadeNamespaced 将返回作为应用程序默认记录器的 root 记录器。

测试

$ composer install
$ ./vendor/bin/phpunit

许可证

Monolog 级联命名空间根据 MIT 许可证授权 - 详细信息请参阅 LICENSE 文件。