Generates Structured Logger for PHP 8.4. Creates PSR-3 structured logging setup with Monolog processors, correlation ID propagation, and context middleware. Includes unit tests.
From accnpx claudepluginhub dykyi-roman/awesome-claude-code --plugin accThis skill uses the workspace's default tool permissions.
references/examples.mdreferences/templates.mdCreates structured logging infrastructure for observability and request tracing.
| Scenario | Example |
|---|---|
| Distributed tracing | Correlate logs across microservices |
| Request debugging | Track full request lifecycle |
| Audit logging | Structured records with context |
| Error investigation | Rich context in error logs |
X-Request-ID headercorrelation_id to every recordPath: src/Infrastructure/Logging/
CorrelationId.php — Value Object with UUID validationCorrelationIdHolder.php — Thread-local correlation ID storagePath: src/Infrastructure/Logging/Processor/
CorrelationIdProcessor.php — Adds correlation_id to log recordsRequestContextProcessor.php — Adds request context to log recordsPath: src/Infrastructure/Logging/
CorrelationIdMiddleware.php — PSR-15 middleware for correlation IDCorrelationIdTest.php — Value Object testsCorrelationIdProcessorTest.php — Processor enrichment testsCorrelationIdMiddlewareTest.php — Middleware behavior tests| Component | Path |
|---|---|
| Core Classes | src/Infrastructure/Logging/ |
| Processors | src/Infrastructure/Logging/Processor/ |
| Unit Tests | tests/Unit/Infrastructure/Logging/ |
| Component | Pattern | Example |
|---|---|---|
| Value Object | CorrelationId | CorrelationId |
| Holder | CorrelationIdHolder | CorrelationIdHolder |
| Processor | {Context}Processor | CorrelationIdProcessor |
| Middleware | CorrelationIdMiddleware | CorrelationIdMiddleware |
| Test | {ClassName}Test | CorrelationIdTest |
final readonly class CorrelationId
{
public function __construct(public string $value)
{
// Validates UUID v4 format
}
public static function generate(): self;
public function toString(): string;
}
final readonly class CorrelationIdProcessor
{
public function __invoke(LogRecord $record): LogRecord;
}
final readonly class CorrelationIdMiddleware implements MiddlewareInterface
{
public function process(
ServerRequestInterface $request,
RequestHandlerInterface $handler
): ResponseInterface;
}
// Middleware extracts or generates correlation ID
$middleware = new CorrelationIdMiddleware(headerName: 'X-Request-ID');
// Monolog processor auto-enriches every log entry
$logger->pushProcessor(new CorrelationIdProcessor());
$logger->pushProcessor(new RequestContextProcessor($request));
// Log entry output:
// {"message":"Order created","correlation_id":"550e8400-...","method":"POST","uri":"/orders"}
Request ──→ CorrelationIdMiddleware
│
Extract/Generate X-Request-ID
│
Store in CorrelationIdHolder
│
CorrelationIdProcessor ──→ Adds correlation_id to every log
RequestContextProcessor ──→ Adds method, URI, IP to every log
│
Response ──→ Add X-Request-ID header
| Anti-pattern | Problem | Solution |
|---|---|---|
| Manual correlation IDs | Inconsistent, easy to forget | Auto-enrich via processor |
| Unstructured logs | Cannot query or filter | Use structured JSON format |
| No request context | Cannot trace request flow | Add request processor |
| Global mutable logger | Thread safety issues | Use holder with request scope |
| Missing response header | Client cannot correlate | Return X-Request-ID in response |
| No holder cleanup | Memory leak between requests | Reset holder after request |
For complete PHP templates and examples, see:
references/templates.md — CorrelationId, Processors, Middleware, Holder templatesreferences/examples.md — Service integration examples and testsProvides UI/UX resources: 50+ styles, color palettes, font pairings, guidelines, charts for web/mobile across React, Next.js, Vue, Svelte, Tailwind, React Native, Flutter. Aids planning, building, reviewing interfaces.