You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
51 lines
2.2 KiB
51 lines
2.2 KiB
2 years ago
|
# debug-fabulous [![NPM version][npm-image]][npm-url] [![build status][travis-image]][travis-url]
|
||
|
|
||
|
## Install
|
||
|
|
||
|
`npm install --save debug-fabulous`
|
||
|
|
||
|
## Purpose:
|
||
|
|
||
|
Wrapper / Extension around [visionmedia's debug](https://github.com/visionmedia/debug) to allow lazy evaluation of debugging via closure handling.
|
||
|
|
||
|
## Why would I consider using this library?
|
||
|
|
||
|
The main utilities added to this library is lazy log level evaluation. This allows whatever logged strings to only be created and evaluated if a log level is active. This can considerably reduce the amount of memory used in logging when you are not using.
|
||
|
|
||
|
With this in mind, there are no excuses to not log anything and everything as performance can be kept in check easily (via log levels).
|
||
|
|
||
|
### Proof
|
||
|
|
||
|
For analysis of the performance results are in [perfWith.out](./test/perf/perfWith.out) and [perfWithout.out](./test/perf/perfWithout.out).
|
||
|
|
||
|
In summary, the tests using this library are using 3 times less memory for the same logging statements (when the log levels are disabled).
|
||
|
|
||
|
## This library essentially wraps two things:
|
||
|
|
||
|
- [lazy-eval](./src/lazy-eval.js): debug closure handling
|
||
|
- [spawn](./src/spawn.js): spawns off existing namespaces for a sub namespace.
|
||
|
|
||
|
## Example:
|
||
|
|
||
|
For usage see the [tests](./test) or the example below.
|
||
|
|
||
|
```js
|
||
|
var debug = require('')();
|
||
|
// force namespace to be enabled otherwise it assumes process.env.DEBUG is setup
|
||
|
// debug.save('namespace');
|
||
|
// debug.enable(debug.load())
|
||
|
debug = debug('namespace'); // debugger in the namespace
|
||
|
debug(function(){return 'something to log' + someLargeHarryString;});
|
||
|
debug(() => 'something to log ${someLargeHarryString}');
|
||
|
debug('small out'); // prints namespace small out
|
||
|
var childDbg = debug.spawn('child'); // debugger in the namespace:child
|
||
|
childDbg('small out'); // prints namespace:child small out
|
||
|
var grandChildDbg = debug.spawn('grandChild'); // debugger in the namespace:child:grandChild
|
||
|
grandChildDbg('small out'); // prints namespace:child:grandChild small out
|
||
|
```
|
||
|
|
||
|
[npm-image]: https://img.shields.io/npm/v/debug-fabulous.svg
|
||
|
[npm-url]: https://www.npmjs.com/package/debug-fabulous
|
||
|
[travis-image]: https://img.shields.io/travis/nmccready/debug-fabulous.svg
|
||
|
[travis-url]: https://travis-ci.org/nmccready/debug-fabulous
|