PHPackages                             monkeyscloud/monkeyslegion-logger - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Logging &amp; Monitoring](/categories/logging)
4. /
5. monkeyscloud/monkeyslegion-logger

ActiveLibrary[Logging &amp; Monitoring](/categories/logging)

monkeyscloud/monkeyslegion-logger
=================================

High-performance, zero-dependency PSR-3 logger for MonkeysLegion with structured logging, handlers, processors, and PHP 8.4 features.

2.0.0(2mo ago)11.9k↓28.6%5MITPHPPHP ^8.4

Since Nov 19Pushed 2mo agoCompare

[ Source](https://github.com/MonkeysCloud/MonkeysLegion-Logger)[ Packagist](https://packagist.org/packages/monkeyscloud/monkeyslegion-logger)[ RSS](/packages/monkeyscloud-monkeyslegion-logger/feed)WikiDiscussions main Synced 2d ago

READMEChangelogDependencies (5)Versions (8)Used By (5)

MonkeysLegion Logger v2
=======================

[](#monkeyslegion-logger-v2)

High-performance, **zero-dependency** PSR-3 logger for the MonkeysLegion PHP framework. Built natively in PHP 8.4 with no Monolog dependency.

Features
--------

[](#features)

FeatureStatus**PSR-3 Compliant**✅ Full `Psr\Log\LoggerInterface`**Zero External Dependencies**✅ Only `psr/log` interface**11 Handlers**Stream, Rotating, Syslog, ErrorLog, Console, Null, Buffer, FingersCrossed, Deduplication, Group, Sampling**2 Formatters**Line (template), JSON (structured)**6 Processors**UID, Memory, Introspection, Timestamp, Redact, Environment**PHP 8.4 Features**Property hooks, asymmetric visibility, backed enum, match expressions**Context Stacking**`pushContext()` / `popContext()` for scoped context**Log Metrics**Real-time per-level counters with `$errorRate`**Sensitive Data Redaction**Automatic GDPR/PCI-safe redaction**Probabilistic Sampling**Sample a % of debug logs in production**FingersCrossed (Black Box)**Buffer until error, then flush full context**Deduplication**Suppress repeated log entriesInstallation
------------

[](#installation)

```
composer require monkeyscloud/monkeyslegion-logger
```

Quick Start
-----------

[](#quick-start)

```
use MonkeysLegion\Logger\Logger;
use MonkeysLegion\Logger\Handler\StreamHandler;
use MonkeysLegion\Logger\LogLevel;

// Create a logger with a file handler
$logger = new Logger(
    handlers: [new StreamHandler('logs/app.log', LogLevel::Debug)],
    channelName: 'app',
);

$logger->info('User {name} logged in', ['name' => 'Jorge']);
$logger->error('Payment failed', ['order_id' => 42]);

$logger->close();
```

Using the LogManager
--------------------

[](#using-the-logmanager)

```
use MonkeysLegion\Logger\LogManager;

$manager = new LogManager([
    'default' => 'stack',
    'channels' => [
        'stack' => [
            'driver' => 'stack',
            'channels' => ['daily', 'console'],
        ],
        'daily' => [
            'driver' => 'daily',
            'path' => 'logs/app.log',
            'level' => 'debug',
            'max_files' => 14,
        ],
        'console' => [
            'driver' => 'console',
            'level' => 'warning',
            'colorize' => true,
        ],
    ],
]);

$logger = $manager->channel(); // default = stack
$logger->info('Application started');

// Switch channels
$apiLogger = $manager->channel('daily');
$apiLogger->error('API timeout');
```

Handlers
--------

[](#handlers)

### StreamHandler

[](#streamhandler)

Writes to files or PHP streams with `LOCK_EX` for concurrency safety.

```
$handler = new StreamHandler('logs/app.log', LogLevel::Warning);
```

### RotatingFileHandler

[](#rotatingfilehandler)

Daily log rotation with automatic cleanup of old files.

```
$handler = new RotatingFileHandler('logs/app.log', maxFiles: 14);
```

### ConsoleHandler

[](#consolehandler)

ANSI-colored output to stderr/stdout.

```
$handler = new ConsoleHandler(LogLevel::Debug, colorize: true);
```

### BufferHandler

[](#bufferhandler)

Defers I/O by buffering records in memory. Flushes on close or overflow.

```
$handler = new BufferHandler($innerHandler, bufferLimit: 100);
```

### FingersCrossedHandler

[](#fingerscrossedhandler)

**Black box recorder.** Buffers everything silently. When an error arrives, flushes the entire buffer — giving full debug context for production errors.

```
$handler = new FingersCrossedHandler($innerHandler, LogLevel::Error);
```

### DeduplicationHandler

[](#deduplicationhandler)

Suppresses repeated identical log entries within a time window.

```
$handler = new DeduplicationHandler($innerHandler, deduplicationWindow: 60);
```

### SamplingHandler

[](#samplinghandler)

**Novel.** Probabilistic sampling — logs only a percentage of non-error records.

```
$handler = new SamplingHandler($innerHandler, sampleRate: 0.01); // 1%
// Errors always pass through regardless of sample rate
```

### GroupHandler

[](#grouphandler)

Dispatches to multiple handlers simultaneously.

```
$handler = new GroupHandler([$fileHandler, $consoleHandler]);
```

Processors
----------

[](#processors)

### RedactProcessor (Novel)

[](#redactprocessor-novel)

Automatically redacts sensitive fields from context data.

```
use MonkeysLegion\Logger\Processor\RedactProcessor;

$processor = new RedactProcessor();
// Automatically redacts: password, token, api_key, secret, credit_card, ssn, etc.

$logger = new Logger(
    handlers: [$handler],
    processors: [$processor],
);

$logger->info('Login', ['user' => 'jorge', 'password' => 'secret']);
// Output: {"context":{"user":"jorge","password":"********"}}
```

### Other Processors

[](#other-processors)

```
use MonkeysLegion\Logger\Processor\UidProcessor;          // Request correlation ID
use MonkeysLegion\Logger\Processor\MemoryProcessor;       // Memory usage & peak
use MonkeysLegion\Logger\Processor\IntrospectionProcessor; // Call site (file, line)
use MonkeysLegion\Logger\Processor\TimestampProcessor;    // Microsecond timestamps
use MonkeysLegion\Logger\Processor\EnvironmentProcessor;  // Hostname, PHP version, SAPI
```

Context Stacking
----------------

[](#context-stacking)

```
$logger->pushContext(['request_id' => 'abc-123']);

$logger->info('Processing started');  // Includes request_id
$logger->info('Step 2 complete');     // Includes request_id

$logger->popContext();

$logger->info('Done'); // No request_id
```

Log Metrics
-----------

[](#log-metrics)

```
$metrics = $logger->getMetrics();

echo $metrics->totalCount;   // Total log entries
echo $metrics->errorRate;    // Ratio of errors to total (0.0–1.0)
echo $metrics->countFor(LogLevel::Error); // Count per level
```

LogLevel Enum
-------------

[](#loglevel-enum)

```
use MonkeysLegion\Logger\LogLevel;

$level = LogLevel::Error;
$level->priority();       // 4
$level->isError();        // true
$level->label();          // 'ERROR'
$level->syslogSeverity(); // LOG_ERR

LogLevel::fromPsr3('fatal'); // LogLevel::Critical
```

Changelog
---------

[](#changelog)

### 2.0.0 — Complete Rebuild

[](#200--complete-rebuild)

**BREAKING CHANGE**: Full API redesign. All v1 classes removed.

- **Architecture**: Replaced Monolog-dependent design with native, zero-dependency Handler/Formatter/Processor architecture
- **Core Types**: `LogLevel` backed enum, immutable `LogRecord` VO, `LogMetrics` VO
- **13 Handlers**: Stream, RotatingFile, Syslog, ErrorLog, Console, Null, Buffer, FingersCrossed, Deduplication, Group, Sampling
- **2 Formatters**: LineFormatter (template-based), JsonFormatter (structured JSON Lines)
- **7 Processors**: UID, Memory, Introspection, Timestamp, Redact, Environment
- **Novel Features**: Probabilistic sampling, sensitive data redaction, context stacking, real-time log metrics
- **PHP 8.4**: Property hooks, asymmetric visibility, backed enums, match expressions
- **DI-First**: `LogManager` with config-driven channel resolution and custom driver extension
- **Tests**: 96 tests, 171 assertions

Requirements
------------

[](#requirements)

- PHP 8.4+
- `psr/log` ^3.0

License
-------

[](#license)

MIT

###  Health Score

48

—

FairBetter than 93% of packages

Maintenance84

Actively maintained with recent releases

Popularity22

Limited adoption so far

Community19

Small or concentrated contributor base

Maturity58

Maturing project, gaining track record

 Bus Factor1

Top contributor holds 56.3% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Every ~35 days

Total

5

Last Release

84d ago

Major Versions

1.0.2 → 2.0.0.x-dev2026-04-11

### Community

Maintainers

![](https://avatars.githubusercontent.com/u/2913369?v=4)[Jorge Peraza](/maintainers/yorchperaza)[@yorchperaza](https://github.com/yorchperaza)

---

Top Contributors

[![yorchperaza](https://avatars.githubusercontent.com/u/2913369?v=4)](https://github.com/yorchperaza "yorchperaza (9 commits)")[![Amanar-Marouane](https://avatars.githubusercontent.com/u/155680356?v=4)](https://github.com/Amanar-Marouane "Amanar-Marouane (5 commits)")[![Copilot](https://avatars.githubusercontent.com/in/1143301?v=4)](https://github.com/Copilot "Copilot (2 commits)")

---

Tags

phpphp-frameworkphp-librarypsr-3loggingloggerstructured-loggingmonkeyslegion

###  Code Quality

TestsPHPUnit

Static AnalysisPHPStan

Type Coverage Yes

### Embed Badge

![Health badge](/badges/monkeyscloud-monkeyslegion-logger/health.svg)

```
[![Health](https://phpackages.com/badges/monkeyscloud-monkeyslegion-logger/health.svg)](https://phpackages.com/packages/monkeyscloud-monkeyslegion-logger)
```

###  Alternatives

[analog/analog

Fast, flexible, easy PSR-3-compatible PHP logging package with dozens of handlers.

3511.6M24](/packages/analog-analog)[inpsyde/wonolog

Monolog-based logging package for WordPress.

184637.3k7](/packages/inpsyde-wonolog)[apix/log

Minimalist, thin and fast PSR-3 compliant (multi-bucket) logger.

521.1M20](/packages/apix-log)[markrogoyski/simplelog-php

Powerful PSR-3 logging. So easy, it's simple.

2819.3k4](/packages/markrogoyski-simplelog-php)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
