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.

v1.1.3(3mo ago)03752MITPHPPHP &gt;=8.2.0

Since Jan 25Pushed 3mo ago1 watchersCompare

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

READMEChangelog (10)Dependencies (7)Versions (19)Used By (2)

log-php
=======

[](#log-php)

A simple PHP module for logging.

This provides some commonly-used 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.2 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 which 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

44

—

FairBetter than 92% of packages

Maintenance78

Regular maintenance activity

Popularity16

Limited adoption so far

Community11

Small or concentrated contributor base

Maturity59

Maturing project, gaining track record

 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 ~21 days

Recently: every ~5 days

Total

18

Last Release

117d ago

### 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

[sentry/sentry

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

1.9k227.1M273](/packages/sentry-sentry)[rollbar/rollbar

Monitors errors and exceptions and reports them to Rollbar

33723.7M82](/packages/rollbar-rollbar)[illuminate/log

The Illuminate Log package.

6224.3M518](/packages/illuminate-log)[open-telemetry/api

API for OpenTelemetry PHP.

1933.0M214](/packages/open-telemetry-api)[open-telemetry/sdk

SDK for OpenTelemetry PHP.

2322.9M248](/packages/open-telemetry-sdk)[pagemachine/typo3-formlog

Form log for TYPO3

23225.3k6](/packages/pagemachine-typo3-formlog)

PHPackages © 2026

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