PHPackages                             jdwx/log - 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. jdwx/log

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

jdwx/log
========

A simple PHP framework for logging with optional telemetry.

v2.0.23(3w ago)07312MITPHPPHP &gt;=8.3.0

Since Jan 25Pushed 3w ago1 watchersCompare

[ Source](https://github.com/jdwx/log-php)[ Packagist](https://packagist.org/packages/jdwx/log)[ RSS](/packages/jdwx-log/feed)WikiDiscussions main Synced yesterday

READMEChangelog (10)Dependencies (35)Versions (49)Used By (2)

log-php
=======

[](#log-php)

A simple PHP module for logging.

This provides some common logging functionality, like being able to relay LoggerInterface functionality between objects.

This is not and is not intended to be anything like a full-featured logging framework like (the excellent) Monolog. It mostly gets used to provide a default logging option for other libraries and for catching and checking log messages during testing.

Installation
------------

[](#installation)

You can require it directly with Composer:

```
composer require jdwx/log
```

Or download the source from GitHub:

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

[](#requirements)

This module requires PHP 8.3 or later.

Usage
-----

[](#usage)

To use this module, you can instantiate one of the logger objects directly:

```
$logger = new \JDWX\Log\StderrLogger();
$logger->info( 'Hello, world!' );
```

Or you can use the RelayLoggerTrait to provide a LoggerInterface on your object while only having to implement a single method:

```
class MyClass implements \Psr\Log\LoggerInterface {
    use \JDWX\Log\RelayLoggerTrait;

    public function log( int $level, Stringable|string $message,
                         array $context = [] ) : void {
        echo "Log message: {$message}\n";
    }

}

$x = new MyClass();
$x->info( 'Hello, world!' );
```

There are many unit tests for this module that provide additional examples of usage.

Stability
---------

[](#stability)

This main module is considered stable and is used in production code. The test coverage is complete.

The Telemetry code is considered experimental and may change in future releases. (When it stabilizes, it will either be moved to a separate module or a major version increment will occur.)

History
-------

[](#history)

This module was refactored from [jdwx/app](https://github.com/jdwx/app) in January 2025 to better support web-based applications.

Rudimentary telemetry functionality was added in December 2025.

###  Health Score

51

—

FairBetter than 95% of packages

Maintenance94

Actively maintained with recent releases

Popularity18

Limited adoption so far

Community15

Small or concentrated contributor base

Maturity66

Established project with proven stability

 Bus Factor1

Top contributor holds 100% 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 ~10 days

Recently: every ~4 days

Total

48

Last Release

25d ago

Major Versions

v1.1.10 → v2.0.02026-05-19

PHP version history (2 changes)v1.0.0PHP &gt;=8.2.0

v2.0.16PHP &gt;=8.3.0

### Community

Maintainers

![](https://www.gravatar.com/avatar/f71b4b976170f89eac19be48c7381a27c49ed8c9cb5e8e6ff05a2ad7583efa13?d=identicon)[jdwx](/maintainers/jdwx)

---

Top Contributors

[![jdwx](https://avatars.githubusercontent.com/u/2722779?v=4)](https://github.com/jdwx "jdwx (1 commits)")

###  Code Quality

TestsPHPUnit

Static AnalysisPHPStan

Type Coverage Yes

### Embed Badge

![Health badge](/badges/jdwx-log/health.svg)

```
[![Health](https://phpackages.com/badges/jdwx-log/health.svg)](https://phpackages.com/packages/jdwx-log)
```

###  Alternatives

[symfony/http-kernel

Provides a structured process for converting a Request into a Response

8.1k869.4M8.8k](/packages/symfony-http-kernel)[sentry/sentry

PHP SDK for Sentry (http://sentry.io)

1.9k247.1M334](/packages/sentry-sentry)[matomo/matomo

Matomo is the leading Free/Libre open analytics platform

21.7k38.9k](/packages/matomo-matomo)[illuminate/log

The Illuminate Log package.

6225.3M622](/packages/illuminate-log)[tempest/framework

The PHP framework that gets out of your way.

2.2k34.4k15](/packages/tempest-framework)[ecotone/ecotone

Enterprise architecture layer for Laravel and Symfony — CQRS, Event Sourcing, Durable Workflows (Sagas, Orchestrators), Projections, and Outbox messaging via PHP attributes.

564576.7k53](/packages/ecotone-ecotone)

PHPackages © 2026

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