middlewares / reporting-logger
用于记录客户端报告的中间件
v2.0.1
2020-12-03 01:20 UTC
Requires
- php: ^7.2 || ^8.0
- middlewares/utils: ^3.0
- psr/http-server-middleware: ^1.0
- psr/log: ^1.0
Requires (Dev)
- friendsofphp/php-cs-fixer: ^2.0
- laminas/laminas-diactoros: ^2.3
- monolog/monolog: ^2.0
- oscarotero/php-cs-fixer-config: ^1.0
- phpstan/phpstan: ^0.12
- phpunit/phpunit: ^8|^9
- squizlabs/php_codesniffer: ^3.0
This package is auto-updated.
Last update: 2024-08-29 04:54:23 UTC
README
用于记录服务器端报告的中间件,如CSP消息或任何JavaScript错误。有关如何收集JavaScript错误的更多信息,请参阅如何收集JavaScript错误。您可能还需要middlewares/payload(或任何具有相同目的的其他中间件)来解析body中的JSON。
要求
- PHP >= 7.2
- PSR-7 http库
- PSR-15中间件分发器
- PSR-3日志库
安装
此软件包可通过Composer安装并自动加载,名称为middlewares/reporting-logger。
composer require middlewares/reporting-logger
示例
在您的javascript代码中注册一个错误处理器
window.onerror = function (message, file, lineNo, colNo) { const error = { message, file, lineNo, colNo }; const blob = new Blob([ JSON.stringify(error) ], { type: 'application/json' }); navigator.sendBeacon('/report', blob); }
Dispatcher::run([ new Middlewares\JsonPayload(), new Middlewares\ReportingLogger($logger) ]);
用法
您需要一个Psr\Log\LoggerInterface
实例来处理日志,例如,monolog
use Monolog\Logger; use Monolog\Handler\StreamHandler; $logger = new Logger('access'); $logger->pushHandler(new StreamHandler('data/logs.txt')); Dispatcher::run([ new Middlewares\ReportingLogger($logger) ]);
可选地,您可以将一个Psr\Http\Message\ResponseFactoryInterface
作为第二个参数提供,该参数将用于创建处理报告后返回的响应。如果未定义,将使用Middleware\Utils\Factory自动检测。
$responseFactory = new MyOwnResponseFactory(); $reporting = new Middlewares\ReportingLogger($logger, $responseFactory);
path
日志将被报告的uri路径。默认为/report
。
// In front-end: send the error to "/log-reporting" path navigator.sendBeacon('/log-reporting', error);
// In back-end: configure to collect all reportings send to the same path $reporting = (new Middlewares\ReportingLogger($logger))->path('/log-reporting')
message
用于保存日志的消息。您可以使用字符串%{varname}
来生成使用报告数据生成的动态消息。例如
$reporting = (new Middlewares\ReportingLogger($logger)) ->message('New error: "%{message}" in line %{lineNumber}, column %{colNumber}') ]);
有关最近更改的更多信息,请参阅CHANGELOG,有关贡献的详细信息,请参阅CONTRIBUTING。
MIT许可证(MIT)。有关更多信息,请参阅LICENSE。