dotkernel/dot-errorhandler

中间件应用的错误日志处理器

4.0.0 2024-08-30 08:01 UTC

This package is auto-updated.

Last update: 2024-08-30 08:05:03 UTC


README

DotKernel的错误日志处理器

OSS Lifecycle PHP from Packagist (specify version)

GitHub issues GitHub forks GitHub stars GitHub license

Build Static codecov

SymfonyInsight

添加错误处理器

  • 添加composer包

composer require dotkernel/dot-errorhandler

  • 添加配置提供者

    • config/config.php 中添加 \Dot\ErrorHandler\ConfigProvider
    • config/pipeline.php 中添加 \Dot\ErrorHandler\ErrorHandlerInterface::class
      • 该接口用作别名,以将所有错误处理相关配置保存在一个文件中
      • 重要提示 此错误处理器之后不应有其他错误处理器(只有之前)因为其他错误处理器将捕获错误,导致 dot-errorhandler 无法捕获任何错误,除非您有特定于错误的处理器,否则我们建议只使用一个错误处理器
  • 按照以下方式配置错误处理器

config/autoload/error-handling.global.php

<?php

use Dot\ErrorHandler\ErrorHandlerInterface;
use Dot\ErrorHandler\LogErrorHandler;
use Dot\ErrorHandler\ErrorHandler;

return [
    'dependencies' => [
        'aliases' => [
            ErrorHandlerInterface::class => LogErrorHandler::class,
        ]

    ],
    'dot-errorhandler' => [
        'loggerEnabled' => true,
        'logger' => 'dot-log.default_logger'
    ]
];

默认日志器的配置示例可以在 config/log.global.php.dist 中找到。

在声明 ErrorHandlerInterface 别名时,您可以选择是否记录

  • 要记录,请使用 LogErrorHandler
  • 对于简单的 Zend Expressive 处理器,请使用 ErrorHandler

Dot\ErrorHandler\ErrorHandler 类与 Zend Expressive 错误处理类相同,唯一的区别是去掉了 final 语句,以便进行扩展。

Dot\ErrorHandler\LogErrorHandler 类是添加了日志支持的 Dot\ErrorHandler\ErrorHandler

注意:LogErrorHandlerErrorHandler 都在包的 ConfigProvider 中声明了工厂。如果需要自定义 ErrorHandler,必须在配置中声明工厂,如示例所示。

示例

<?php

use Dot\ErrorHandler\ErrorHandlerInterface;
use Custom\MyErrorHandler;
use Custom\MyErrorHandlerFactory;

return [
    'dependencies' => [
        'factories' => [
            MyErrorHandler::class => MyCustomHandlerFactory::class,
        ],
        
        'aliases' => [
            ErrorHandlerInterface::class => MyErrorHandler::class,
        ]

    ],
    'dot-errorhandler' => [
        'loggerEnabled' => true,
        'logger' => 'dot-log.default_logger'
    ]
];

配置示例可以在本项目的 config 目录中找到。