https://github.com/offirmo/prefixed-log
A wrapper around a console.log compatible function to add a prefix. Handle all cases and typescript compatible!
https://github.com/offirmo/prefixed-log
Last synced: 10 months ago
JSON representation
A wrapper around a console.log compatible function to add a prefix. Handle all cases and typescript compatible!
- Host: GitHub
- URL: https://github.com/offirmo/prefixed-log
- Owner: Offirmo
- License: unlicense
- Created: 2016-05-26T09:20:12.000Z (about 10 years ago)
- Default Branch: master
- Last Pushed: 2017-06-01T11:33:23.000Z (about 9 years ago)
- Last Synced: 2025-08-24T20:06:15.895Z (11 months ago)
- Language: Shell
- Homepage:
- Size: 93.8 KB
- Stars: 1
- Watchers: 2
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# prefixed-log
[](http://badge.fury.io/js/prefixed-log)
[](http://unlicense.org/)
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
```sh
npm i --save prefixed-log
```
Then in your code:
* node stable (4+): `const makePrefixedLogger = require('prefixed-log').factory`
* node legacy (<4): `var makePrefixedLogger = require('prefixed-log/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:
```js
import { factory as makePrefixedLogger } from 'prefixed-log'
const logger = makePrefixedLogger('* [foo]')
logger('Hello', 42) --> * [foo] Hello 42
```
More advanced usage, specifying a logger:
```js
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:
```js
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 :
```js
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)
})
```