prefixed-log
TypeScript icon, indicating that this package has built-in type declarations

2.0.0 • Public • Published

prefixed-log

NPM version license

A wrapper around a console.log compatible function to add a prefix to the output, ex.:

* [foo] hello !
* [foo] bye !

[1468917781403] > sending request...
[1468917781407] > handling response...

A common requirement when debugging.

The trick is that, when the 1st arg is a string :

  • console.log/warn/etc. have a special interface which allows to replace %d placeholders with remaining params
  • console.log/warn/etc. add a spacing between params when not using placeholder

This small lib take care of everything so that it looks nice.

installation

npm i --save prefixed-log

Then in your code:

  • node stable (4+): const makePrefixedLogger = require('..').factory
  • node legacy (<4): var makePrefixedLogger = require('../dist/index.node-legacy').factory
  • ES2015/ES6: import { factory as makePrefixedLogger } from 'prefixed-log'

Note: there are examples in folder test/

Usage

Note: there are examples in folder test/

Simplest usage:

import { factory as makePrefixedLogger } from 'prefixed-log'
const logger = makePrefixedLogger('* [foo]')
 
logger('Hello', 42)     --> * [foo] Hello 42

More advanced usage, specifying a logger:

import { factory as makePrefixedLogger } from 'prefixed-log'
const logger = makePrefixedLogger('* [foo]', console.log.bind(console))
 
logger('Hello', 42)     --> * [foo] Hello 42
logger('Hello %d', 33)  --> * [foo] Hello 33
logger({foo: 'bar'})    --> * [foo] { foo: 'bar' }

Another advanced usage, using a dynamic prefix:

import { factory as makePrefixedLogger } from 'prefixed-log'
const logger = makePrefixedLogger(() => Date.now(), console.log.bind(console))
 
logger('Hello', 42)     --> 1464255584287 Hello 42
logger('Hello %d', 33)  --> 1464255584288 Hello 33

Options

There are secret options :

const logger = makePrefixedLogger('* [foo]', {
  // default values :
  spacer: ' ',          ///< spacer that will be used between the prefix and the 1st arg *if it is a string*
  spacerAlt: '',        ///< spacer that will be used between the prefix and the 1st arg *if it is NOT a string*
  isEnabled: () => true ///< nothing will be displayed at all if it returns false (useful for disabling debug)
})

Readme

Keywords

Package Sidebar

Install

npm i prefixed-log

Weekly Downloads

1

Version

2.0.0

License

Unlicense

Last publish

Collaborators

  • offirmo