middlewares/reporting-logger

用于记录客户端报告的中间件

v2.0.1 2020-12-03 01:20 UTC

This package is auto-updated.

Last update: 2024-08-29 04:54:23 UTC


README

Latest Version on Packagist Software License Testing Total Downloads

用于记录服务器端报告的中间件,如CSP消息或任何JavaScript错误。有关如何收集JavaScript错误的更多信息,请参阅如何收集JavaScript错误。您可能还需要middlewares/payload(或任何具有相同目的的其他中间件)来解析body中的JSON。

要求

安装

此软件包可通过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