PHPackages                             daviddeutsch/redbean-psr3 - 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. daviddeutsch/redbean-psr3

ActiveLibrary

daviddeutsch/redbean-psr3
=========================

A PSR-3 standard compliant logger for RedBeanPHP.

08PHP

Since Jan 1Pushed 12y ago1 watchersCompare

[ Source](https://github.com/daviddeutsch/redbean-psr3)[ Packagist](https://packagist.org/packages/daviddeutsch/redbean-psr3)[ RSS](/packages/daviddeutsch-redbean-psr3/feed)WikiDiscussions master Synced today

READMEChangelogDependenciesVersions (1)Used By (0)

RedBean PSR-3
=============

[](#redbean-psr-3)

A PSR-3 standard compliant logger for RedBeanPHP.

### Usage

[](#usage)

```
// Include or autoload the files in this library

R::ext( 'logger', array('RedBean_Psr3', 'instance') );

R::logger()->warning('Nuclear Annihilation');

R::logger()->notice('Note to self: Think over logging level of nuclear things.');

// Also instance safe (daviddeutsch/redbean-instance)

R::ext( 'logger', array('RedBean_Psr3', 'instance') );

$db = R::instance();

$db->log = $db->logger();

$db->log->warning('So this still works.');

// Handles context by making it into JSON

$massage = array(
   'duration'     => '5 minutes',
   'satisfaction' => 'questionable'
)

R::logger()->notice('Here is your massage', $massage);

/*
 * $object->id      = 123;
 * $object->level   = 'notice';
 * $object->message = 'Here is your message';
 * $object->context = '{"duration":"5 minutes","satisfaction":"questionable"}';
 */

// Unless you want to "expand" certain context members into their own fields

R::logger()->expandContext(
   array('domain', 'subdomain', 'locale', 'url', 'quality')
)

// Yup, array or object doesn't matter
$joke = (object) array(
   'domain'    => 'humor',
   'subdomain' => 'language',
   'locale'    => 'en-GB',
   'url'       => 'github.com/daviddeutsch/redbean-psr3/README.md',
   'quality'   => 'low',
   'duration'  => 'short glance',
   'success'   => false
)

R::logger()->notice('A joke on words', $joke);

/*
 * $object->id        = 124;
 * $object->level     = 'notice';
 * $object->message   = 'A joke on words';
 * $object->context   = '{"duration":"short glance","success":false}';
 * $object->domain    = 'humor';
 * $object->subdomain = 'language';
 * $object->locale    = 'en-GB';
 * $object->url       = 'github.com/daviddeutsch/redbean-psr3/README.md';
 * $object->quality   = 'low';
 */
```

###  Health Score

20

—

LowBetter than 17% of packages

Maintenance20

Infrequent updates — may be unmaintained

Popularity4

Limited adoption so far

Community7

Small or concentrated contributor base

Maturity41

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.

### Community

Maintainers

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

---

Top Contributors

[![daviddeutsch](https://avatars.githubusercontent.com/u/630246?v=4)](https://github.com/daviddeutsch "daviddeutsch (2 commits)")

### Embed Badge

![Health badge](/badges/daviddeutsch-redbean-psr3/health.svg)

```
[![Health](https://phpackages.com/badges/daviddeutsch-redbean-psr3/health.svg)](https://phpackages.com/packages/daviddeutsch-redbean-psr3)
```

PHPackages © 2026

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