passchn/cakephp-logging

CakePHP 日志插件

安装: 10

依赖: 0

建议者: 0

安全: 0

星星: 0

关注者: 1

分支: 0

开放问题: 0

类型:cakephp-plugin

0.1.0 2024-08-18 18:27 UTC

This package is auto-updated.

Last update: 2024-09-18 18:43:52 UTC


README

安装

您可以使用 composer 将此插件安装到您的 CakePHP 应用程序中。

安装 composer 包的推荐方法是

composer require passchn/cakephp-logging

加载插件

bin/cake plugin load Passchn/CakeLogging

使用

该插件使您能够配置 Cake Log 类,使用应用程序容器中可用的 PSR-3 日志记录器接口的实现。

它附带一个 MultiLogger,您可以在其中定义多个实现作为后备。

配置

在您的 config/app.php 中,您可以像这样配置日志记录器

return [
    'Log' => [
        'debug' => [
            'className' => LoggerFacade::class, // use the facade to configure the actual logger
            LoggerFacade::CONFIG_KEY_UNDERLYING_LOGGER => MyLoggerImplementation::class, // a LoggerInterface implementation
        ],
    ],
];

注意,MyLoggerImplementation 必须在您的容器中可用。

MultiLogger 使用

您还可以使用 MultiLogger 定义多个后备

return [
    
    // default config for the multi logger
    MultiLoggerConfig::class => [
        MultiLoggerConfig::CONFIG_KEY_LOGGERS => [
            SentryLogger::class,
            FileLog::class,
        ],
    ],
    
    'Log' => [
        'debug' => [
            'className' => LoggerFacade::class,
            LoggerFacade::CONFIG_KEY_UNDERLYING_LOGGER => MultiLogger::class,
            MultiLoggerConfig::class => [
                // multi logger config can be overridden here
                MultiLoggerConfig::CONFIG_KEY_LOGGERS => [
                    MyLoggerImplementation::class,
                    AnotherLoggerImplementation::class,
                    FileLog::class, // the default file logger as fallback
                ],
            ],
            'path' => LOGS,
            'file' => 'debug',
            'url' => env('LOG_DEBUG_URL', null),
            'scopes' => null,
            'levels' => ['notice', 'info', 'debug'],
        ],
        
        'error' => [
            // ...
        ],
        
        'emergency' => [
            'className' => FileLog::class,
            'className' => LoggerFacade::class,
            LoggerFacade::CONFIG_KEY_UNDERLYING_LOGGER => MultiLogger::class,
            MultiLoggerConfig::CONFIG_KEY_LOGGERS => [
                SmsEmergencyLogger::class,
                AlexaTextToSpeechAlarmWithWaterSprinklerLogger::class,
            ],
        ],
    ],
];

如果您使用默认的 FileLogger,请保留配置键不变,因为它们将用于 FileLog 配置。

多日志记录器使用的每个日志记录器都必须是您的容器中可用的 LoggerInterface 的实现。

配置自定义日志记录器

如果您想配置自定义日志记录器,可以通过实现 LoggerInterface 并将其添加到您的容器中来实现。

use Psr\Log\LoggerInterface;

class MyLoggerImplementation extends \Psr\Log\AbstractLogger implements LoggerInterface
{
    public function __construct(
        private readonly SomeDependency $dependency,
    ) {
        // ...
    }

    public function log($level, $message, array $context = [])
    {
        // your implementation
    }
}

然后,您可以将其添加到您的容器中。

在您的 Application.php 中

public function services(ContainerInterface $container): void
{
    $container->add(
        MyLoggerImplementation::class, 
        fn () => new MyLoggerImplementation(
            $container->get(SomeDependency::class),
        ),
    );
}

然后,您只需通过将类名添加到您的 app.php 配置中相应的日志作用域来使用实现。

MultiLoggerConfig::CONFIG_KEY_LOGGERS => [
    MyLoggerImplementation::class,
    ...
],

有关依赖注入的更多信息,请参阅 CakePHP 书籍

合作

如果您有任何想法或遇到错误,请随时打开一个问题或拉取请求。