Skip to content
This repository has been archived by the owner on May 25, 2020. It is now read-only.
/ debug3 Public archive
forked from nulllines/debug3

a tiny debugging wrapper on top of `debug` to improve performance - https://www.npmjs.com/package/debug3

License

Notifications You must be signed in to change notification settings

maxholman/debug3

 
 

Repository files navigation

debug3

npm version Build Status Coverage Status FOSSA Status Greenkeeper badge

A tiny debugging wrapper on top of debug

The main difference is that debug3 accepts functions as arguments and does not execute them unless it will output something (ie process.env.DEBUG is set to the relevant value).

This saves valuable processing resources that may have been used to create debug output that might not even be displayed.

Bonus: Package name of the calling module is prefixed to the debug message (can be turned off)

Installation

$ npm install debug3

Usage

debug3 exposes a function; simply pass this function a namespace, and it will return a decorated version of console.error for you to pass debug statements to.

Pass this resulting function any type of object, including functions.

Example

(In these examples package.json has a name of super-server which you can see in the output)

Basic Example

const debug = require('debug3')('http');

debug('This is a debug test!', [1, 2, 3]);
// Output: **super-server:http** This is a debug test! [1, 2, 3]

Passing a function

const debug = require('debug3')('http');

// ES6
debug('This is a debug test!', () => [1, 2, 3]);
// Output: **super-server:http** This is a debug test! [1, 2, 3]

// ES5
debug('This is a debug test!', function() { return [1, 2, 3] });
// Output: **super-server:http** This is a debug test! [1, 2, 3]

Turning off the package name prefix

const debug = require('debug3')('http', {prefix: false});

debug('This is a debug test!', [1, 2, 3]);
// Output: **http** This is a debug test! [1, 2, 3]

Comparison

Original debug

const debug = require('debug')('http');

debug('This is a debug test!', [1, 2, 3], JSON.stringify(largefile));
// With process.env.DEBUG === 'super-server:*'
// Output: **super-server:http** [1, 2, 3], {"large-json-file": [1111212,2232323,4435353....
// Time taken: 500ms

debug('This is a debug test!', [1, 2, 3], JSON.stringify(largefile));
// With process.env.DEBUG === undefined
// Output: <empty>
// Time taken: 500ms
               ^^^^^!!!!

With debug3

const debug = require('debug3')('http');

debug([1, 2, 3], () => JSON.stringify(largefile));
// With process.env.DEBUG === 'super-server:*'
// Output: **super-server:http** [1, 2, 3], {"large-json-file": [1111212,2232323,4435353....
// Time taken: 500ms

debug([1, 2, 3], () => JSON.stringify(largefile));
// With process.env.DEBUG === undefined
// Output: <empty>
// Time taken: 0ms
               ^^^ thats more like it!

Why debug3?

Because debug2 was taken :)

License

MIT. See LICENSE file

About

a tiny debugging wrapper on top of `debug` to improve performance - https://www.npmjs.com/package/debug3

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • JavaScript 100.0%