承接 tiny-blocks/http-logging 相关项目开发

从需求分析到上线部署,全程专人跟进,保证项目质量与交付效率

邮箱:yvsm@zunyunkeji.com | QQ:316430983 | 微信:yvsm316

tiny-blocks/http-logging

Composer 安装命令:

composer require tiny-blocks/http-logging

包简介

PSR-15 middleware that logs HTTP request and response metadata with request duration.

README 文档

README

License

Overview

Provides a PSR-15 middleware that records every inbound HTTP exchange. Before invoking the next handler, the middleware logs the request method, URI, query parameters, and parsed body. After the handler runs, it logs the response status code, decoded JSON body when present, and the elapsed duration in milliseconds. Successful responses are logged at info level. Responses in the 4xx/5xx range are logged at error level.

Duration is measured through a TinyBlocks\Time\MonotonicClock and a Stopwatch, so the reading is unaffected by wall-clock adjustments. When the request carries a correlation identifier (under the correlationId attribute, as exposed by tiny-blocks/http-correlation-id), every log entry produced by this middleware is automatically tagged with the correlation_id context key through the CorrelatedLogger collaborator.

Installation

composer require tiny-blocks/http-logging

How to use

Wiring the middleware

Builds the middleware with a PSR-3 logger and processes a request through it.

<?php

declare(strict_types=1);

use GuzzleHttp\Psr7\Response;
use GuzzleHttp\Psr7\ServerRequest;
use Psr\Http\Message\ResponseInterface;
use Psr\Http\Message\ServerRequestInterface;
use Psr\Http\Server\RequestHandlerInterface;
use Psr\Log\LoggerInterface;
use TinyBlocks\Http\Logging\LogMiddleware;

# Build the middleware with the default system monotonic clock and a PSR-3 logger.
$middleware = LogMiddleware::create()->withLogger(logger: $logger)->build();

# Process an inbound request through the middleware.
$response = $middleware->process(
    new ServerRequest('GET', '/orders'),
    new class () implements RequestHandlerInterface {
        public function handle(ServerRequestInterface $request): ResponseInterface
        {
            return new Response(200, [], '{"status":"ok"}');
        }
    }
);

# The middleware logged a `request` entry before, and a `response` entry after the handler call.
$response->getStatusCode();

Correlated logs

When this middleware runs downstream from CorrelationIdMiddleware, every log entry it emits carries the request's correlation identifier under the correlation_id context key, with no extra plumbing.

<?php

declare(strict_types=1);

use TinyBlocks\Http\CorrelationId\CorrelationIdMiddleware;
use TinyBlocks\Http\Logging\LogMiddleware;

# Composes the two middlewares: correlation-id first so the attribute exists by the time log runs.
$correlationId = CorrelationIdMiddleware::create()->build();
$log = LogMiddleware::create()->withLogger(logger: $logger)->build();

# Every `request` and `response` entry emitted by $log will carry `correlation_id` in context.

Customizing the clock

Replaces the default SystemMonotonicClock with a custom monotonic clock (for example, a deterministic clock in tests).

<?php

declare(strict_types=1);

use TinyBlocks\Http\Logging\LogMiddleware;
use TinyBlocks\Time\MonotonicClock;

# Custom monotonic clock that returns a fixed reading on each call.
$clock = new readonly class () implements MonotonicClock {
    public function nanoseconds(): int
    {
        return 0;
    }
};

# Build the middleware with the custom clock.
$middleware = LogMiddleware::create()
    ->withClock(clock: $clock)
    ->withLogger(logger: $logger)
    ->build();

License

Http Logging is licensed under MIT.

Contributing

Please follow the contributing guidelines to contribute to the project.

统计信息

  • 总下载量: 0
  • 月度下载量: 0
  • 日度下载量: 0
  • 收藏数: 1
  • 点击次数: 1
  • 依赖项目数: 0
  • 推荐数: 0

GitHub 信息

  • Stars: 1
  • Watchers: 0
  • Forks: 0
  • 开发语言: PHP

其他信息

  • 授权协议: MIT
  • 更新时间: 2026-07-01

承接程序开发

PHP开发

VUE

Vue开发

前端开发

小程序开发

公众号开发

系统定制

数据库设计

云部署

网站建设

安全加固