null-logtron

2.2.0 • Public • Published

null-logtron

A logger that no-ops

Example

var NullLogtron = require("null-logtron");
 
var logger = NullLogtron();
logger.debug('some static string', { some: 'meta obj' })
logger.info('some static string', { some: 'meta obj' })
logger.warn('some static string', { some: 'meta obj' })
logger.error('some static string', { some: 'meta obj' })

The NullLogger does not write anywhere. It actually writes to a circular buffer in memory (pre-allocated to 50).

Using in tests

You can use the .items() method in your tests to read the records that have been written to the logger.

var NullLogtron = require('null-logtron');
var test = require('tape');
 
test('some module', function t(assert) {
    var logger = NullLogtron();
    var thing = new Thing({ logger: logger })
 
    thing.doStuff();
 
    var items = logger.items();
    assert.equal(items.filter(function (x) {
        return x.level === 'error'
    }).length, 1, 'thing writes to logger.error()');
    assert.end();
});

Motivation

If your writing a library you want the application developer to pass in a logger. You cannot default a logger because that breaks the unix rule of silence.

So you either need a no-op logger or you need a ton of if statements. This is a cheap no-op logger.

I've chosen to back it by a RingBuffer so that if you do REPL into your process you can inspect the log statements.

The RingBuffer only holds 50 log records so the memory overhead is trivial.

Docs

// TODO. State what the module does.

Installation

npm install null-logtron

Tests

npm test

Contributors

  • Raynos

MIT Licensed

Readme

Keywords

none

Package Sidebar

Install

npm i null-logtron

Weekly Downloads

1

Version

2.2.0

License

none

Last publish

Collaborators

  • raynos