vmpublishing/psr15-middleware-request-logger

中间件,以不同详细程度记录每个入站请求和响应,并记录所有异常(并重新抛出)

1.0.2 2019-06-18 14:17 UTC

This package is auto-updated.

Last update: 2024-09-19 02:31:33 UTC


README

Build Status Code Coverage Scrutinizer Code Quality

WHATS

尽可能低依赖的 PSR-15 请求日志中间件。

出于维护原因,我们喜欢一个瘦、可配置的日志中间件,以处理所有日志。

  • 每个请求
  • 每个响应
  • 每个错误
  • 每个异常

这将重新抛出任何错误。错误处理应在比此中间件更外层的层进行处理。

安装

要安装,请使用 composer require vmpublishing/psr15-middleware-request-logger:*@stable

使用

这是一个 psr/log 的花哨包装器。因此,您需要以任何您希望的方式设置自己的日志记录器。之后,您只需创建中间件并使用它即可

use VM\RequestLogger\Services\StandardLogFormatter;
use VM\RequestLogger\Middlewares\RequestLogger;

// given a logger in $logger, build the StandardLogFormatter (or write your own log formatter, using the interface)
$formatter = new StandardLogFormatter($logger);
$middleware = new RequestLogger($formatter);

// and for slim, given $app
$app->add($middleware);

// or just add it on the routes you want it on

默认设置是 notice,并且它不会记录低于该级别的任何内容,无论您在日志记录器中设置什么日志级别。这是为了优化原因。格式化器在日志级别足够之前不会构建任何字符串或执行任何数组魔术。

如果您想以不同于默认级别的级别进行记录,只需传递该级别即可

use VM\RequestLogger\Services\LogLevel;
use VM\RequestLogger\Services\StandardLogFormatter;

$logLevel = new LogLevel(LogLevel::LEVEL_ERROR);
$formatter = new StandardLogFormatter($logger, $logLevel);
// ...

StandardLogFormatter 可以配置为在哪个日志级别发送哪个消息。只需传递一个数组以覆盖默认设置。例如

use VM\RequestLogger\Services\StandardLogFormatter;
use VM\RequestLogger\Services\LogLevel

$logLevel = new LogLevel(LogLevel::LEVEL_ERROR);
$logLevelRequestUri = new LogLevel(LogLevel::LEVEL_DEBUG);
$logLevelMappings = [StandardLogFormatter::MESSAGE_REQUEST_URI => $logLevelRequestUri];
$formatter = new StandardLogFormatter($logger, $logLevel, $logLevelMappings);

在 github 上报告任何问题/功能请求。享受!